diff --git a/addons/web_tour/static/src/tour_service/tour_service.js b/addons/web_tour/static/src/tour_service/tour_service.js index 6522094400b..043da2e3681 100644 --- a/addons/web_tour/static/src/tour_service/tour_service.js +++ b/addons/web_tour/static/src/tour_service/tour_service.js @@ -63,8 +63,9 @@ export const tourService = { const tours = {}; const tourRegistry = registry.category("web_tour.tours"); function register(name, tour) { + name = tour.saveAs || name tours[name] = { - name: tour.saveAs || name, + name, get steps() { if (typeof tour.steps === "function") { return tour.steps().map((step) => { diff --git a/addons/web_tour/static/tests/tour_service_tests.js b/addons/web_tour/static/tests/tour_service_tests.js index 8543ec3b066..14f71df54f6 100644 --- a/addons/web_tour/static/tests/tour_service_tests.js +++ b/addons/web_tour/static/tests/tour_service_tests.js @@ -101,6 +101,23 @@ QUnit.module("Tour service", (hooks) => { assert.strictEqual(sortedTours[0].name, "Tour 3"); }); + QUnit.test("override existing tour by using saveAs", async function (assert) { + registry.category("web_tour.tours") + .add("Tour 1", { + steps: () => [{ trigger: "#1" }], + saveAs: "homepage" + }) + .add("Tour 2", { + steps: () => [{ trigger: "#2" }], + saveAs: "homepage" + }); + const env = await makeTestEnv({}); + const sortedTours = env.services.tour_service.getSortedTours(); + assert.strictEqual(sortedTours.length, 1); + assert.deepEqual(sortedTours[0].steps, [{ shadow_dom: undefined, trigger: "#2" }]); + assert.deepEqual(sortedTours[0].name, "homepage"); + }); + QUnit.test("points to next step", async function (assert) { registry.category("web_tour.tours").add("tour1", { sequence: 10,