diff --git a/addons/web/static/tests/views/list_view_tests.js b/addons/web/static/tests/views/list_view_tests.js index 7a488c02c63..4a5fb766b2b 100644 --- a/addons/web/static/tests/views/list_view_tests.js +++ b/addons/web/static/tests/views/list_view_tests.js @@ -7041,6 +7041,47 @@ QUnit.module("Views", (hooks) => { } ); + QUnit.test("grouped list keeps offset on switchView", async (assert) => { + assert.expect(8); + serverData.views = { + "foo,false,search": ` + + + `, + "foo,99,list": ``, + "foo,100,form": `
`, + }; + + const offsets = [0, 1, 1]; + const mockRPC = async (route, args) => { + if (args.method === "web_read_group") { + assert.strictEqual(args.kwargs.offset, offsets.shift()); + } + }; + const wc = await createWebClient({ serverData, mockRPC }); + await doAction(wc, { + res_model: "foo", + type: "ir.actions.act_window", + views: [ + [99, "list"], + [100, "form"], + ], + context: { + search_default_groupby: true, + }, + }); + + assert.containsOnce(target, ".o_list_view"); + await click(target, ".o_pager_next"); + assert.containsNone(target, ".o_data_row"); + await click(target, ".o_group_header"); + assert.containsOnce(target, ".o_data_row"); + await click(target, ".o_data_cell"); + assert.containsOnce(target, ".o_form_view"); + await click(target, ".o_back_button"); + assert.containsOnce(target, ".o_data_row"); + }); + QUnit.test("can sort records when clicking on header", async function (assert) { serverData.models.foo.fields.foo.sortable = true;