From 0965ed1207e86d750472db32f94f33b7b8264273 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Wed, 23 Apr 2025 10:30:10 -0400 Subject: [PATCH 1/9] CASH-188 | Update unit tests --- .../salesforce-helper.spec.js | 38 ++++++++++++++++ .../salesforce-webchat.spec.js | 45 +++++++++++++++++++ .../salesforce-webchat/salesforce-webchat.vue | 10 +++-- 3 files changed, 89 insertions(+), 4 deletions(-) create mode 100644 src/digital-components/salesforce-webchat/salesforce-helper.spec.js create mode 100644 src/digital-components/salesforce-webchat/salesforce-webchat.spec.js diff --git a/src/digital-components/salesforce-webchat/salesforce-helper.spec.js b/src/digital-components/salesforce-webchat/salesforce-helper.spec.js new file mode 100644 index 000000000..ae7712c49 --- /dev/null +++ b/src/digital-components/salesforce-webchat/salesforce-helper.spec.js @@ -0,0 +1,38 @@ +import * as salesforceWebchatHelperdev from './salesforce-helper-dev'; +import * as salesforceWebchatHelperqa from './salesforce-helper-qa'; +import * as salesforceWebchatHelperprod from './salesforce-helper-prod'; + +const mockEmbeddedSvc = { + settings: {}, + init: jest.fn(), + testFlag: true, +} + +describe("Salesforce Webchat Helper Tests", () => { + describe("Files and exposed methods exist", () => { + it("exposes initialization methods", () => { + expect(typeof salesforceWebchatHelperdev.initializeSalesforceWebchatForDev).toBe("function"); + expect(typeof salesforceWebchatHelperqa.initializeSalesforceWebchatForQa).toBe("function"); + expect(typeof salesforceWebchatHelperprod.initializeSalesforceWebchatForProd).toBe("function"); + + }) + }), + describe("Custom code added correctly", ()=> { + it("defines a local variable 'embedded_svc' in the initESW method", ()=> { + mockEmbeddedSvc.testFlag = "dev"; + window.embedded_svc = mockEmbeddedSvc; + salesforceWebchatHelperdev.initializeSalesforceWebchatForDev(); + expect(embedded_svc.testFlag).toBe("dev"); + + mockEmbeddedSvc.testFlag = "qa"; + window.embedded_svc = mockEmbeddedSvc; + salesforceWebchatHelperqa.initializeSalesforceWebchatForQa(); + expect(embedded_svc.testFlag).toBe("qa"); + + mockEmbeddedSvc.testFlag = "prod"; + window.embedded_svc = mockEmbeddedSvc; + salesforceWebchatHelperprod.initializeSalesforceWebchatForProd(); + expect(embedded_svc.testFlag).toBe("prod"); + }) + }) +}) \ No newline at end of file diff --git a/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js b/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js new file mode 100644 index 000000000..0b368b6f0 --- /dev/null +++ b/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js @@ -0,0 +1,45 @@ +import { shallowMount } from "@vue/test-utils"; +import salesforceWebchat from "./salesforce-webchat.vue"; +import * as devHelper from "./salesforce-helper-dev"; +import * as qaHelper from "./salesforce-helper-qa"; +import * as prodHelper from "./salesforce-helper-prod"; + +describe("salesforceWebchat.vue", () => { + it("renders correctly", () => { + const wrapper = shallowMount(salesforceWebchat); + expect(wrapper.exists()).toBe(true); + }); + + it("has the correct default data", () => { + const wrapper = shallowMount(salesforceWebchat); + expect(wrapper.vm.$data).toEqual({}); + }); + + it("has the correct default props", () => { + const wrapper = shallowMount(salesforceWebchat); + expect(wrapper.props().hideSalesforceWebchatLaunchButton).toBe(false); + }); + + it("appends script to document body on mount", () => { + }); + + it("calls the correct initialization function based on environment", () => { + process.env.VUE_APP_CURRENT_ENVIRONMENT = "Prod"; + let wrapper = shallowMount(salesforceWebchat); + mockProd = jest.spyOn(prodHelper, "initializeSalesforceWebchatForProd"); + wrapper.vm.initializeSalesforceWebchat(); + expect(mockProd).toHaveBeenCalled(); + + process.env.VUE_APP_CURRENT_ENVIRONMENT = "QA"; + wrapper = shallowMount(salesforceWebchat); + mockQa = jest.spyOn(qaHelper, "initializeSalesforceWebchatForQa"); + wrapper.vm.initializeSalesforceWebchat(); + expect(mockQa).toHaveBeenCalled(); + + process.env.VUE_APP_CURRENT_ENVIRONMENT = "Dev"; + wrapper = shallowMount(salesforceWebchat); + mockDev = jest.spyOn(devHelper, "initializeSalesforceWebchatForDev"); + wrapper.vm.initializeSalesforceWebchat(); + expect(mockDev).toHaveBeenCalled(); + }); +}); diff --git a/src/digital-components/salesforce-webchat/salesforce-webchat.vue b/src/digital-components/salesforce-webchat/salesforce-webchat.vue index 58da503fa..75f689d10 100644 --- a/src/digital-components/salesforce-webchat/salesforce-webchat.vue +++ b/src/digital-components/salesforce-webchat/salesforce-webchat.vue @@ -23,7 +23,11 @@ export default { // Load in script from salesforce CDN const script = document.createElement("script"); script.src = "https://service.force.com/embeddedservice/5.0/esw.min.js"; - script.onload = () => { + script.onload = this.initializeSalesforceWebchat; + document.body.appendChild(script); + }, + methods: { + initializeSalesforceWebchat() { switch (process.env.VUE_APP_CURRENT_ENVIRONMENT) { case "Prod": initializeSalesforceWebchatForProd(); @@ -37,10 +41,8 @@ export default { initializeSalesforceWebchatForDev(); break; } - }; - document.body.appendChild(script); + }, }, - methods: {}, computed: {}, components: {}, }; From 4a178f50092c5ab5cf8d657ce19148f4a2ed0ab7 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Wed, 23 Apr 2025 10:31:06 -0400 Subject: [PATCH 2/9] CASH-188 | Unit tests --- .../salesforce-webchat/salesforce-webchat.spec.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js b/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js index 0b368b6f0..178e431cc 100644 --- a/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js +++ b/src/digital-components/salesforce-webchat/salesforce-webchat.spec.js @@ -20,9 +20,6 @@ describe("salesforceWebchat.vue", () => { expect(wrapper.props().hideSalesforceWebchatLaunchButton).toBe(false); }); - it("appends script to document body on mount", () => { - }); - it("calls the correct initialization function based on environment", () => { process.env.VUE_APP_CURRENT_ENVIRONMENT = "Prod"; let wrapper = shallowMount(salesforceWebchat); From 1a4c90fc3f1277fc7bbdfb8663a1e02f06d56a90 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Wed, 23 Apr 2025 11:02:25 -0400 Subject: [PATCH 3/9] CASH-188 | Formatting --- .../salesforce-helper.spec.js | 57 ++++++++++--------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/src/digital-components/salesforce-webchat/salesforce-helper.spec.js b/src/digital-components/salesforce-webchat/salesforce-helper.spec.js index ae7712c49..aac2869f1 100644 --- a/src/digital-components/salesforce-webchat/salesforce-helper.spec.js +++ b/src/digital-components/salesforce-webchat/salesforce-helper.spec.js @@ -1,38 +1,43 @@ -import * as salesforceWebchatHelperdev from './salesforce-helper-dev'; -import * as salesforceWebchatHelperqa from './salesforce-helper-qa'; -import * as salesforceWebchatHelperprod from './salesforce-helper-prod'; +import * as salesforceWebchatHelperdev from "./salesforce-helper-dev"; +import * as salesforceWebchatHelperqa from "./salesforce-helper-qa"; +import * as salesforceWebchatHelperprod from "./salesforce-helper-prod"; const mockEmbeddedSvc = { settings: {}, init: jest.fn(), testFlag: true, -} +}; describe("Salesforce Webchat Helper Tests", () => { describe("Files and exposed methods exist", () => { it("exposes initialization methods", () => { - expect(typeof salesforceWebchatHelperdev.initializeSalesforceWebchatForDev).toBe("function"); - expect(typeof salesforceWebchatHelperqa.initializeSalesforceWebchatForQa).toBe("function"); - expect(typeof salesforceWebchatHelperprod.initializeSalesforceWebchatForProd).toBe("function"); - - }) + expect(typeof salesforceWebchatHelperdev.initializeSalesforceWebchatForDev).toBe( + "function" + ); + expect(typeof salesforceWebchatHelperqa.initializeSalesforceWebchatForQa).toBe( + "function" + ); + expect(typeof salesforceWebchatHelperprod.initializeSalesforceWebchatForProd).toBe( + "function" + ); + }); }), - describe("Custom code added correctly", ()=> { - it("defines a local variable 'embedded_svc' in the initESW method", ()=> { - mockEmbeddedSvc.testFlag = "dev"; - window.embedded_svc = mockEmbeddedSvc; - salesforceWebchatHelperdev.initializeSalesforceWebchatForDev(); - expect(embedded_svc.testFlag).toBe("dev"); + describe("Custom code added correctly", () => { + it("defines a local variable 'embedded_svc' in the initESW method", () => { + mockEmbeddedSvc.testFlag = "dev"; + window.embedded_svc = mockEmbeddedSvc; + salesforceWebchatHelperdev.initializeSalesforceWebchatForDev(); + expect(embedded_svc.testFlag).toBe("dev"); - mockEmbeddedSvc.testFlag = "qa"; - window.embedded_svc = mockEmbeddedSvc; - salesforceWebchatHelperqa.initializeSalesforceWebchatForQa(); - expect(embedded_svc.testFlag).toBe("qa"); + mockEmbeddedSvc.testFlag = "qa"; + window.embedded_svc = mockEmbeddedSvc; + salesforceWebchatHelperqa.initializeSalesforceWebchatForQa(); + expect(embedded_svc.testFlag).toBe("qa"); - mockEmbeddedSvc.testFlag = "prod"; - window.embedded_svc = mockEmbeddedSvc; - salesforceWebchatHelperprod.initializeSalesforceWebchatForProd(); - expect(embedded_svc.testFlag).toBe("prod"); - }) - }) -}) \ No newline at end of file + mockEmbeddedSvc.testFlag = "prod"; + window.embedded_svc = mockEmbeddedSvc; + salesforceWebchatHelperprod.initializeSalesforceWebchatForProd(); + expect(embedded_svc.testFlag).toBe("prod"); + }); + }); +}); From be213ef7d6614d2d3cdcae116a37e396c79ea513 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Wed, 23 Apr 2025 11:11:44 -0400 Subject: [PATCH 4/9] Revert "Merge pull request #2421 from Safelite/feature/CASH-188" This reverts commit 6fe56a56f26a27ba5332e44fe5c241b840272581, reversing changes made to 9c2a35f896fd496e1169a39da095f9dae2c4f200. --- jest.config.js | 2 +- .../salesforce-helper-dev.js | 66 ------------------ .../salesforce-helper-prod.js | 63 ----------------- .../salesforce-helper-qa.js | 67 ------------------- .../salesforce-webchat/salesforce-webchat.vue | 57 ---------------- .../funnel-header/funnel-header.vue | 7 -- src/layouts/confirmation/confirmation.vue | 5 +- 7 files changed, 2 insertions(+), 265 deletions(-) delete mode 100644 src/digital-components/salesforce-webchat/salesforce-helper-dev.js delete mode 100644 src/digital-components/salesforce-webchat/salesforce-helper-prod.js delete mode 100644 src/digital-components/salesforce-webchat/salesforce-helper-qa.js delete mode 100644 src/digital-components/salesforce-webchat/salesforce-webchat.vue diff --git a/jest.config.js b/jest.config.js index e534b3e3f..905e907dc 100644 --- a/jest.config.js +++ b/jest.config.js @@ -35,7 +35,7 @@ module.exports = { testMatch: ["**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)"], coverageThreshold: { global: { - statements: 72, + statements: 74, }, }, // Uncomment this to avoid the massive amount of warnings we are getting for onSubmit and onInvalidSubmit diff --git a/src/digital-components/salesforce-webchat/salesforce-helper-dev.js b/src/digital-components/salesforce-webchat/salesforce-helper-dev.js deleted file mode 100644 index fb29bc9eb..000000000 --- a/src/digital-components/salesforce-webchat/salesforce-helper-dev.js +++ /dev/null @@ -1,66 +0,0 @@ -/* -The code below is generated from salesforce but modified in the following ways: - * Only the javascript inside the second - - diff --git a/src/fmg-components/funnel-header/funnel-header.vue b/src/fmg-components/funnel-header/funnel-header.vue index 4862b5205..c6cbb8727 100644 --- a/src/fmg-components/funnel-header/funnel-header.vue +++ b/src/fmg-components/funnel-header/funnel-header.vue @@ -2,7 +2,6 @@
- Safelite logo @@ -27,7 +26,6 @@ import alert from "@/ux-components/alert/alert"; import eventBus from "@/helpers/event-bus/event-bus"; import { globalEvents } from "@/constants/events"; import menuModal from "@/fmg-components/funnel-header/menu-modal/menu-modal"; -import salesforceWebchat from "../../digital-components/salesforce-webchat/salesforce-webchat.vue"; // Constants const ALERT_DURATION = 3000; // millisecond time to display alert before dismissal @@ -41,10 +39,6 @@ export default { }, props: { cmsWidgetName: String, - hideSalesforceWebchatLaunchButton: { - type: Boolean, - default: false, - }, }, computed: { imageSrc() { @@ -68,7 +62,6 @@ export default { components: { alert, menuModal, - salesforceWebchat, }, mounted() { // Check if alert event is on the bus diff --git a/src/layouts/confirmation/confirmation.vue b/src/layouts/confirmation/confirmation.vue index 40736b2c2..3b3ead4c1 100644 --- a/src/layouts/confirmation/confirmation.vue +++ b/src/layouts/confirmation/confirmation.vue @@ -5,10 +5,7 @@
- +
From cc380d29bbe881977a77a253b1aa476b7cd5d4f4 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Thu, 24 Apr 2025 10:37:18 -0400 Subject: [PATCH 5/9] Reapply "Merge pull request #2421 from Safelite/feature/CASH-188" This reverts commit be213ef7d6614d2d3cdcae116a37e396c79ea513. --- jest.config.js | 2 +- .../salesforce-helper-dev.js | 66 ++++++++++++++++++ .../salesforce-helper-prod.js | 63 +++++++++++++++++ .../salesforce-helper-qa.js | 67 +++++++++++++++++++ .../salesforce-webchat/salesforce-webchat.vue | 57 ++++++++++++++++ .../funnel-header/funnel-header.vue | 7 ++ src/layouts/confirmation/confirmation.vue | 5 +- 7 files changed, 265 insertions(+), 2 deletions(-) create mode 100644 src/digital-components/salesforce-webchat/salesforce-helper-dev.js create mode 100644 src/digital-components/salesforce-webchat/salesforce-helper-prod.js create mode 100644 src/digital-components/salesforce-webchat/salesforce-helper-qa.js create mode 100644 src/digital-components/salesforce-webchat/salesforce-webchat.vue diff --git a/jest.config.js b/jest.config.js index 905e907dc..e534b3e3f 100644 --- a/jest.config.js +++ b/jest.config.js @@ -35,7 +35,7 @@ module.exports = { testMatch: ["**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)"], coverageThreshold: { global: { - statements: 74, + statements: 72, }, }, // Uncomment this to avoid the massive amount of warnings we are getting for onSubmit and onInvalidSubmit diff --git a/src/digital-components/salesforce-webchat/salesforce-helper-dev.js b/src/digital-components/salesforce-webchat/salesforce-helper-dev.js new file mode 100644 index 000000000..fb29bc9eb --- /dev/null +++ b/src/digital-components/salesforce-webchat/salesforce-helper-dev.js @@ -0,0 +1,66 @@ +/* +The code below is generated from salesforce but modified in the following ways: + * Only the javascript inside the second + + diff --git a/src/fmg-components/funnel-header/funnel-header.vue b/src/fmg-components/funnel-header/funnel-header.vue index 092224551..bf4f17ec1 100644 --- a/src/fmg-components/funnel-header/funnel-header.vue +++ b/src/fmg-components/funnel-header/funnel-header.vue @@ -2,6 +2,7 @@
+ Safelite logo @@ -27,6 +28,7 @@ import alert from "@/ux-components/alert/alert"; import eventBus from "@/helpers/event-bus/event-bus"; import { globalEvents } from "@/constants/events"; import menuModal from "@/fmg-components/funnel-header/menu-modal/menu-modal"; +import salesforceWebchat from "../../digital-components/salesforce-webchat/salesforce-webchat.vue"; import progressBar from "@/fmg-components/funnel-header/progress-bar/progress-bar"; // Constants @@ -41,6 +43,10 @@ export default { }, props: { cmsWidgetName: String, + hideSalesforceWebchatLaunchButton: { + type: Boolean, + default: false, + }, }, computed: { imageSrc() { @@ -64,6 +70,7 @@ export default { components: { alert, menuModal, + salesforceWebchat, progressBar, }, mounted() { diff --git a/src/layouts/confirmation/confirmation.vue b/src/layouts/confirmation/confirmation.vue index 3b3ead4c1..40736b2c2 100644 --- a/src/layouts/confirmation/confirmation.vue +++ b/src/layouts/confirmation/confirmation.vue @@ -5,7 +5,10 @@
- +
From daf89bdb32c95e2b507a6a5d491e558e83bdd788 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Thu, 24 Apr 2025 12:41:00 -0400 Subject: [PATCH 6/9] CASH-353 | Fix missing 'const' error --- src/layouts/vin-lookup/vin-lookup.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/layouts/vin-lookup/vin-lookup.vue b/src/layouts/vin-lookup/vin-lookup.vue index 1b57ee068..14a87bf45 100644 --- a/src/layouts/vin-lookup/vin-lookup.vue +++ b/src/layouts/vin-lookup/vin-lookup.vue @@ -341,7 +341,7 @@ export default { false ); if (this.isHeavyTruck) { - closestShops = await this.findClosestApplicableShops( + const closestShops = await this.findClosestApplicableShops( this.serviceZipCode, this.carId ); From c7ca767a25dc9e560b2dc5c772345cba354e4316 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Thu, 24 Apr 2025 13:32:48 -0400 Subject: [PATCH 7/9] CASH-188 | Debug info added. --- .../salesforce-webchat/salesforce-helper-qa.js | 2 ++ .../salesforce-webchat/salesforce-webchat.vue | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/src/digital-components/salesforce-webchat/salesforce-helper-qa.js b/src/digital-components/salesforce-webchat/salesforce-helper-qa.js index ef08d42de..46ae49359 100644 --- a/src/digital-components/salesforce-webchat/salesforce-helper-qa.js +++ b/src/digital-components/salesforce-webchat/salesforce-helper-qa.js @@ -52,6 +52,7 @@ export function initializeSalesforceWebchatForQa() { }; if (!window.embedded_svc) { + console.log("no embedded svc found"); var s = document.createElement("script"); s.setAttribute( "src", @@ -62,6 +63,7 @@ export function initializeSalesforceWebchatForQa() { }; document.body.appendChild(s); } else { + console.log("embedded svc found"); initESW("https://service.force.com"); } } diff --git a/src/digital-components/salesforce-webchat/salesforce-webchat.vue b/src/digital-components/salesforce-webchat/salesforce-webchat.vue index 75f689d10..95c1348eb 100644 --- a/src/digital-components/salesforce-webchat/salesforce-webchat.vue +++ b/src/digital-components/salesforce-webchat/salesforce-webchat.vue @@ -28,16 +28,23 @@ export default { }, methods: { initializeSalesforceWebchat() { + console.log( + "process.env.VUE_APP_CURRENT_ENVIRONMENT", + process.env.VUE_APP_CURRENT_ENVIRONMENT + ); switch (process.env.VUE_APP_CURRENT_ENVIRONMENT) { case "Prod": + console.log("Prod"); initializeSalesforceWebchatForProd(); break; case "QA": case "SysTest": + console.log("QA"); initializeSalesforceWebchatForQa(); break; case "Dev": case "Localhost": + console.log("Dev"); initializeSalesforceWebchatForDev(); break; } From bf6e80d05db377b162089a0ac69eb60a17745536 Mon Sep 17 00:00:00 2001 From: maguire-arman Date: Thu, 24 Apr 2025 14:12:14 -0400 Subject: [PATCH 8/9] Revert "Merge pull request #2413 from Safelite/feature/CASH-488" This reverts commit e79314e8fe66fba819dcec3c0975368caf263b6d, reversing changes made to 7356268f2fd77175529b216f55ff215d6326f48b. --- package-lock.json | 135 +----------------- package.json | 2 - playwright-tests/.env.dev | 4 - .../azure-pipelines-automated-testing.yml | 15 +- .../constants/DefaultTestData.ts | 2 +- playwright-tests/pages/ServiceLocationPage.ts | 25 ++-- playwright-tests/pages/ServicePackagesPage.ts | 3 +- playwright-tests/tests/0000__M.test.ts | 5 +- 8 files changed, 29 insertions(+), 162 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2b541b385..00fc7673a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "0.1.0", "dependencies": { "@iframe-resizer/child": "^5.3.3", + "axios": "^0.23.0", "bootstrap": "^5.3.3", "core-js": "^3.38.1", "http-status-codes": "^2.3.0", @@ -37,9 +38,6 @@ "@vue/eslint-config-prettier": "^9.0.0", "@vue/test-utils": "^2.4.6", "@vue/vue3-jest": "^27.0.0", - "axios": "^1.8.4", - "axios-mock-adapter": "^2.1.0", - "axios-retry": "^4.5.0", "dotenv-safe": "^9.1.0", "eslint": "8.57", "eslint-plugin-prettier": "^5.2.1", @@ -5414,82 +5412,12 @@ } }, "node_modules/axios": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", - "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", - "dev": true, + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.23.0.tgz", + "integrity": "sha512-NmvAE4i0YAv5cKq8zlDoPd1VLKAqX5oLuZKs8xkJa4qi6RGn0uhCYFjWtHHC9EM/MwOwYWOs53W+V0aqEXq1sg==", "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/axios-mock-adapter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/axios-mock-adapter/-/axios-mock-adapter-2.1.0.tgz", - "integrity": "sha512-AZUe4OjECGCNNssH8SOdtneiQELsqTsat3SQQCWLPjN436/H+L9AjWfV7bF+Zg/YL9cgbhrz5671hoh+Tbn98w==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "is-buffer": "^2.0.5" - }, - "peerDependencies": { - "axios": ">= 0.17.0" - } - }, - "node_modules/axios-mock-adapter/node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/axios-retry": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-4.5.0.tgz", - "integrity": "sha512-aR99oXhpEDGo0UuAlYcn2iGRds30k366Zfa05XWScR9QaQD4JYiP3/1Qt1u7YlefUOK+cn0CcwoL1oefavQUlQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "is-retry-allowed": "^2.2.0" - }, - "peerDependencies": { - "axios": "0.x || 1.x" - } - }, - "node_modules/axios/node_modules/form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" + "follow-redirects": "^1.14.4" } }, "node_modules/babel-jest": { @@ -8077,22 +8005,6 @@ "node": ">= 0.4" } }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/escalade": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", @@ -9315,7 +9227,6 @@ "version": "1.15.6", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "dev": true, "funding": [ { "type": "individual", @@ -9783,22 +9694,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -10614,19 +10509,6 @@ "dev": true, "license": "MIT" }, - "node_modules/is-retry-allowed": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz", - "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -16365,13 +16247,6 @@ "node": ">= 0.10" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true, - "license": "MIT" - }, "node_modules/pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", diff --git a/package.json b/package.json index fb65152d5..c63d8b5e8 100644 --- a/package.json +++ b/package.json @@ -52,8 +52,6 @@ "prettier": "^3.3.3", "sass": "^1.77.8", "sass-loader": "^8.0.2", - "sqlite": "^5.1.1", - "sqlite3": "^5.1.7", "typescript": "^4.9.5" }, "eslintConfig": { diff --git a/playwright-tests/.env.dev b/playwright-tests/.env.dev index 8c064ba62..47ec8336d 100644 --- a/playwright-tests/.env.dev +++ b/playwright-tests/.env.dev @@ -4,13 +4,9 @@ # Environment type NODE_ENV="qa" -SKIP_CONTENT_SITE=false - # Base URLs by environment (uncomment the one you need) # qa BASE_URL="https://www-qa2.safelite.com/" -# qa with skipToInsurance Turned Off -# BASE_URL="https://fixmyglassqa.safelite.com/?cns=all&experiments=ConceptFunnel=ConceptFunnel_V1=ConceptFunnel_VinAndEmailOptional=true,NextGen_IGQSkipToInsurance=NextGen_IGQSkipToInsurance_V1=NextGen_IGQSkipToInsurance_CONTROL=true" # sys # BASE_URL="https://www-test2.safelite.com/fmg/?fmgPage=vehicle" # dev diff --git a/playwright-tests/azure-pipelines-automated-testing.yml b/playwright-tests/azure-pipelines-automated-testing.yml index ac332ef44..b4d7da831 100644 --- a/playwright-tests/azure-pipelines-automated-testing.yml +++ b/playwright-tests/azure-pipelines-automated-testing.yml @@ -1,3 +1,11 @@ +schedules: +- cron: 0 9 * * MON-FRI + always: true + displayName: Daily Test Automation Run for FMG-NextGen + branches: + include: + - main + pool: 'AmazonLinuxPool' variables: @@ -42,10 +50,10 @@ stages: container_id=$(docker create \ --ipc=host \ -e CCIS_API_AUTH=$(CCIS_API_AUTH) \ - -e BASE_URL="$(BASE_URL)" \ + -e BASE_URL=$(BASE_URL) \ -e CCIS_API_URL=$(CCIS_API_URL) \ -e ADMIN_SERVICE_API_URL=$(ADMIN_SERVICE_API_URL) \ - -e SKIP_CONTENT_SITE=$(SKIP_CONTENT_SITE) \ + -e SHARD=$(shardNumber) \ -e CI=true \ -e NODE_ENV=$(NODE_ENV) \ $(dockerImageName):$(imageTag) \ @@ -123,7 +131,6 @@ stages: -e REPORT_NAME="$report_name" \ -e CURRENT_DAY="$current_day" \ -e NUMERIC_DATE="$numeric_date" \ - -e NODE_ENV=$(NODE_ENV) \ $(dockerImageName):$(imageTag) \ bash -c "chmod +x devops/scripts/jira_writeback.sh echo \"Moving Playwright reports out of subfolders...\" @@ -144,7 +151,7 @@ stages: fi echo \"Writing report to Jira card '$jira_card_number'...\" - /app/devops/scripts/jira_writeback.sh add_comment \"$jira_card_number\" /app/ortoni-report/\${REPORT_NAME} \"AUTOMATED TEST RUN: $(date) - \${CURRENT_DAY} (\${NUMERIC_DATE}) - Environment: \${NODE_ENV}\" ") + /app/devops/scripts/jira_writeback.sh add_comment \"$jira_card_number\" /app/ortoni-report/\${REPORT_NAME} \"AUTOMATED TEST RUN: $(date) - \${CURRENT_DAY} (\${NUMERIC_DATE})\" ") # Start container and stream logs echo "Starting merge" diff --git a/playwright-tests/business-logic/constants/DefaultTestData.ts b/playwright-tests/business-logic/constants/DefaultTestData.ts index 197297b4b..6efb2c1db 100644 --- a/playwright-tests/business-logic/constants/DefaultTestData.ts +++ b/playwright-tests/business-logic/constants/DefaultTestData.ts @@ -43,7 +43,7 @@ export function getCustomerDetails(): ICustomerDetails { street: faker.location.streetAddress(), city: 'Columbus', state: 'Ohio', - postalCode: '21237', + postalCode: '43215', country: 'United States' } }; diff --git a/playwright-tests/pages/ServiceLocationPage.ts b/playwright-tests/pages/ServiceLocationPage.ts index 609f2d1db..b8c8649b6 100644 --- a/playwright-tests/pages/ServiceLocationPage.ts +++ b/playwright-tests/pages/ServiceLocationPage.ts @@ -55,7 +55,7 @@ export class ServiceLocationPage extends BasePage { // For in-shop and drop off this.selectAShopOptions = this.page.locator('[class="shop-question"]'); - this.firstAppointmentButton = this.page.locator('fieldset:has(legend#chooseShop)').locator('label').first(); + this.firstAppointmentButton = this.page.locator('div').filter({ hasText: /Appts/}).first(); this.changeZipButton = this.page.locator('a:has(span.sr-only:has-text("edit zip code"))'); this.updateZipTextBox = this.page.locator('#serviceZipCode'); this.saveZipButton = this.page.getByText('Save ZIP code', { exact: true }); @@ -71,7 +71,7 @@ export class ServiceLocationPage extends BasePage { this.vehicleProtectedYesButton = this.page.locator('label').filter({ hasText: 'Yes' }).locator('div'); this.vehicleProtectedNoButton = this.page.locator('label').filter({ hasText: 'No' }).locator('div'); this.saveAddressButton = this.page.getByRole('button', { name: 'Continue' }) - this.repeatedClicksModalCloseButton = this.page.locator('.QSISlider').locator('img[src*=\'close\']'); + this.repeatedClicksModalCloseButton = this.page.getByRole('img').nth(1); } async selectLocation(appointmentDetails: IAppointmentDetails){ @@ -103,14 +103,9 @@ export class ServiceLocationPage extends BasePage { await this.saveZipButton.click(); } await this.inShopButton.click(); - await this.selectAShopOptions.locator(`[buttonbodycopy="${appointmentDetails.shopAddress}"]`).scrollIntoViewIfNeeded().then(() => this.selectAShopOptions.locator(`[buttonbodycopy="${appointmentDetails.shopAddress}"]`).click()); + await this.selectAShopOptions.locator(`[buttonbodycopy="${appointmentDetails.shopAddress}"]`).check(); } else { - await this.firstAppointmentButton.scrollIntoViewIfNeeded().then(async () => { - await this.firstAppointmentButton.click(); - if (appointmentDetails) { - appointmentDetails.shopAddress = await this.firstAppointmentButton.locator('.row-two').innerText(); - } - }); + await this.firstAppointmentButton.click(); } } @@ -119,6 +114,9 @@ export class ServiceLocationPage extends BasePage { await this.mobileButton.click(); await this.enterServiceAddressButton.click(); await this.addressForm.populateAddress({ address: appointmentDetails.serviceAddress! }); + if (await this.repeatedClicksModalCloseButton.isVisible()) { + await this.repeatedClicksModalCloseButton.click(); + } if (faker.datatype.boolean()) { await this.vehicleProtectedYesButton.check(); } else { @@ -135,13 +133,8 @@ export class ServiceLocationPage extends BasePage { if (appointmentDetails && appointmentDetails.shopAddress) { await this.selectAShopOptions.locator(`[buttonbodycopy="${appointmentDetails.shopAddress}"]`).check(); } else { - /// await this.clickWithRetry(this.firstAppointmentButton, this.page); - await this.firstAppointmentButton.scrollIntoViewIfNeeded().then(async () => { - await this.firstAppointmentButton.click(); - if (appointmentDetails) { - appointmentDetails.shopAddress = await this.firstAppointmentButton.locator('.row-two').innerText(); - } - }); + // await this.firstAppointmentButton.click(); + await this.clickWithRetry(this.firstAppointmentButton, this.page); } } diff --git a/playwright-tests/pages/ServicePackagesPage.ts b/playwright-tests/pages/ServicePackagesPage.ts index 65bba63b8..9a3b87ae3 100644 --- a/playwright-tests/pages/ServicePackagesPage.ts +++ b/playwright-tests/pages/ServicePackagesPage.ts @@ -41,7 +41,7 @@ export class ServicePackagesPage extends BasePage { this.closeButton = this.page. getByRole('dialog').locator('button').filter({ hasText: 'Close' }); this.promoCodeTextbox = this.page.getByLabel('Enter a promo code'); this.applyPromoButton = this.page.getByRole('button', { name: 'Apply promo code' }); - this.repeatedClicksModalCloseButton = this.page.locator('.QSISlider').locator('img[src*=\'close\']'); + this.repeatedClicksModalCloseButton = this.page.getByRole('img').nth(1); // this.validateURL(this.url); } @@ -76,7 +76,6 @@ export class ServicePackagesPage extends BasePage { if (await this.repeatedClicksModalCloseButton.isVisible()) { await this.repeatedClicksModalCloseButton.click(); } - await this.page.waitForTimeout(3000); await this.closeButton.click(); } else { diff --git a/playwright-tests/tests/0000__M.test.ts b/playwright-tests/tests/0000__M.test.ts index 656e078c2..6bef5a2f3 100644 --- a/playwright-tests/tests/0000__M.test.ts +++ b/playwright-tests/tests/0000__M.test.ts @@ -192,9 +192,8 @@ async function runWorkflow(page: Page, testCase: TestCase) { //============================= TEST WORKFLOW STEPS ============================= - // Use Environment Variable to decide whether or not we want to skip content site aka home page - - if (process.env.SKIP_CONTENT_SITE == "false") { + // Execute home page for qa and dev environments (skip for sys) + if (process.env.NODE_ENV !== 'sys') { await test.step('HomePage >> Lets Get Started', async () => { let homePage = testCase.pages.homePage; console.log(`Customer for this test: ${customerDetails?.firstName} ${customerDetails?.lastName}`); From 16949a78a91a2955fce535cdaffc329309fecf94 Mon Sep 17 00:00:00 2001 From: maguire-arman Date: Thu, 24 Apr 2025 14:54:40 -0400 Subject: [PATCH 9/9] added CASH-488 changes --- playwright-tests/.env.dev | 4 +++ .../azure-pipelines-automated-testing.yml | 15 +++-------- .../constants/DefaultTestData.ts | 2 +- playwright-tests/pages/ServiceLocationPage.ts | 25 ++++++++++++------- playwright-tests/pages/ServicePackagesPage.ts | 4 +-- playwright-tests/tests/0000__M.test.ts | 4 +-- 6 files changed, 29 insertions(+), 25 deletions(-) diff --git a/playwright-tests/.env.dev b/playwright-tests/.env.dev index 47ec8336d..8c064ba62 100644 --- a/playwright-tests/.env.dev +++ b/playwright-tests/.env.dev @@ -4,9 +4,13 @@ # Environment type NODE_ENV="qa" +SKIP_CONTENT_SITE=false + # Base URLs by environment (uncomment the one you need) # qa BASE_URL="https://www-qa2.safelite.com/" +# qa with skipToInsurance Turned Off +# BASE_URL="https://fixmyglassqa.safelite.com/?cns=all&experiments=ConceptFunnel=ConceptFunnel_V1=ConceptFunnel_VinAndEmailOptional=true,NextGen_IGQSkipToInsurance=NextGen_IGQSkipToInsurance_V1=NextGen_IGQSkipToInsurance_CONTROL=true" # sys # BASE_URL="https://www-test2.safelite.com/fmg/?fmgPage=vehicle" # dev diff --git a/playwright-tests/azure-pipelines-automated-testing.yml b/playwright-tests/azure-pipelines-automated-testing.yml index b4d7da831..ac332ef44 100644 --- a/playwright-tests/azure-pipelines-automated-testing.yml +++ b/playwright-tests/azure-pipelines-automated-testing.yml @@ -1,11 +1,3 @@ -schedules: -- cron: 0 9 * * MON-FRI - always: true - displayName: Daily Test Automation Run for FMG-NextGen - branches: - include: - - main - pool: 'AmazonLinuxPool' variables: @@ -50,10 +42,10 @@ stages: container_id=$(docker create \ --ipc=host \ -e CCIS_API_AUTH=$(CCIS_API_AUTH) \ - -e BASE_URL=$(BASE_URL) \ + -e BASE_URL="$(BASE_URL)" \ -e CCIS_API_URL=$(CCIS_API_URL) \ -e ADMIN_SERVICE_API_URL=$(ADMIN_SERVICE_API_URL) \ - -e SHARD=$(shardNumber) \ + -e SKIP_CONTENT_SITE=$(SKIP_CONTENT_SITE) \ -e CI=true \ -e NODE_ENV=$(NODE_ENV) \ $(dockerImageName):$(imageTag) \ @@ -131,6 +123,7 @@ stages: -e REPORT_NAME="$report_name" \ -e CURRENT_DAY="$current_day" \ -e NUMERIC_DATE="$numeric_date" \ + -e NODE_ENV=$(NODE_ENV) \ $(dockerImageName):$(imageTag) \ bash -c "chmod +x devops/scripts/jira_writeback.sh echo \"Moving Playwright reports out of subfolders...\" @@ -151,7 +144,7 @@ stages: fi echo \"Writing report to Jira card '$jira_card_number'...\" - /app/devops/scripts/jira_writeback.sh add_comment \"$jira_card_number\" /app/ortoni-report/\${REPORT_NAME} \"AUTOMATED TEST RUN: $(date) - \${CURRENT_DAY} (\${NUMERIC_DATE})\" ") + /app/devops/scripts/jira_writeback.sh add_comment \"$jira_card_number\" /app/ortoni-report/\${REPORT_NAME} \"AUTOMATED TEST RUN: $(date) - \${CURRENT_DAY} (\${NUMERIC_DATE}) - Environment: \${NODE_ENV}\" ") # Start container and stream logs echo "Starting merge" diff --git a/playwright-tests/business-logic/constants/DefaultTestData.ts b/playwright-tests/business-logic/constants/DefaultTestData.ts index 6efb2c1db..197297b4b 100644 --- a/playwright-tests/business-logic/constants/DefaultTestData.ts +++ b/playwright-tests/business-logic/constants/DefaultTestData.ts @@ -43,7 +43,7 @@ export function getCustomerDetails(): ICustomerDetails { street: faker.location.streetAddress(), city: 'Columbus', state: 'Ohio', - postalCode: '43215', + postalCode: '21237', country: 'United States' } }; diff --git a/playwright-tests/pages/ServiceLocationPage.ts b/playwright-tests/pages/ServiceLocationPage.ts index b8c8649b6..609f2d1db 100644 --- a/playwright-tests/pages/ServiceLocationPage.ts +++ b/playwright-tests/pages/ServiceLocationPage.ts @@ -55,7 +55,7 @@ export class ServiceLocationPage extends BasePage { // For in-shop and drop off this.selectAShopOptions = this.page.locator('[class="shop-question"]'); - this.firstAppointmentButton = this.page.locator('div').filter({ hasText: /Appts/}).first(); + this.firstAppointmentButton = this.page.locator('fieldset:has(legend#chooseShop)').locator('label').first(); this.changeZipButton = this.page.locator('a:has(span.sr-only:has-text("edit zip code"))'); this.updateZipTextBox = this.page.locator('#serviceZipCode'); this.saveZipButton = this.page.getByText('Save ZIP code', { exact: true }); @@ -71,7 +71,7 @@ export class ServiceLocationPage extends BasePage { this.vehicleProtectedYesButton = this.page.locator('label').filter({ hasText: 'Yes' }).locator('div'); this.vehicleProtectedNoButton = this.page.locator('label').filter({ hasText: 'No' }).locator('div'); this.saveAddressButton = this.page.getByRole('button', { name: 'Continue' }) - this.repeatedClicksModalCloseButton = this.page.getByRole('img').nth(1); + this.repeatedClicksModalCloseButton = this.page.locator('.QSISlider').locator('img[src*=\'close\']'); } async selectLocation(appointmentDetails: IAppointmentDetails){ @@ -103,9 +103,14 @@ export class ServiceLocationPage extends BasePage { await this.saveZipButton.click(); } await this.inShopButton.click(); - await this.selectAShopOptions.locator(`[buttonbodycopy="${appointmentDetails.shopAddress}"]`).check(); + await this.selectAShopOptions.locator(`[buttonbodycopy="${appointmentDetails.shopAddress}"]`).scrollIntoViewIfNeeded().then(() => this.selectAShopOptions.locator(`[buttonbodycopy="${appointmentDetails.shopAddress}"]`).click()); } else { - await this.firstAppointmentButton.click(); + await this.firstAppointmentButton.scrollIntoViewIfNeeded().then(async () => { + await this.firstAppointmentButton.click(); + if (appointmentDetails) { + appointmentDetails.shopAddress = await this.firstAppointmentButton.locator('.row-two').innerText(); + } + }); } } @@ -114,9 +119,6 @@ export class ServiceLocationPage extends BasePage { await this.mobileButton.click(); await this.enterServiceAddressButton.click(); await this.addressForm.populateAddress({ address: appointmentDetails.serviceAddress! }); - if (await this.repeatedClicksModalCloseButton.isVisible()) { - await this.repeatedClicksModalCloseButton.click(); - } if (faker.datatype.boolean()) { await this.vehicleProtectedYesButton.check(); } else { @@ -133,8 +135,13 @@ export class ServiceLocationPage extends BasePage { if (appointmentDetails && appointmentDetails.shopAddress) { await this.selectAShopOptions.locator(`[buttonbodycopy="${appointmentDetails.shopAddress}"]`).check(); } else { - // await this.firstAppointmentButton.click(); - await this.clickWithRetry(this.firstAppointmentButton, this.page); + /// await this.clickWithRetry(this.firstAppointmentButton, this.page); + await this.firstAppointmentButton.scrollIntoViewIfNeeded().then(async () => { + await this.firstAppointmentButton.click(); + if (appointmentDetails) { + appointmentDetails.shopAddress = await this.firstAppointmentButton.locator('.row-two').innerText(); + } + }); } } diff --git a/playwright-tests/pages/ServicePackagesPage.ts b/playwright-tests/pages/ServicePackagesPage.ts index 9a3b87ae3..6e09c003e 100644 --- a/playwright-tests/pages/ServicePackagesPage.ts +++ b/playwright-tests/pages/ServicePackagesPage.ts @@ -41,7 +41,7 @@ export class ServicePackagesPage extends BasePage { this.closeButton = this.page. getByRole('dialog').locator('button').filter({ hasText: 'Close' }); this.promoCodeTextbox = this.page.getByLabel('Enter a promo code'); this.applyPromoButton = this.page.getByRole('button', { name: 'Apply promo code' }); - this.repeatedClicksModalCloseButton = this.page.getByRole('img').nth(1); + this.repeatedClicksModalCloseButton = this.page.locator('.QSISlider').locator('img[src*=\'close\']'); // this.validateURL(this.url); } @@ -76,8 +76,8 @@ export class ServicePackagesPage extends BasePage { if (await this.repeatedClicksModalCloseButton.isVisible()) { await this.repeatedClicksModalCloseButton.click(); } + await this.page.waitForTimeout(3000); await this.closeButton.click(); - } else { await this.skipQuoteEmailButton.click(); } diff --git a/playwright-tests/tests/0000__M.test.ts b/playwright-tests/tests/0000__M.test.ts index 6bef5a2f3..524e93664 100644 --- a/playwright-tests/tests/0000__M.test.ts +++ b/playwright-tests/tests/0000__M.test.ts @@ -192,8 +192,8 @@ async function runWorkflow(page: Page, testCase: TestCase) { //============================= TEST WORKFLOW STEPS ============================= - // Execute home page for qa and dev environments (skip for sys) - if (process.env.NODE_ENV !== 'sys') { + // Use Environment Variable to decide whether or not we want to skip content site aka home page + if (process.env.SKIP_CONTENT_SITE == "false") { await test.step('HomePage >> Lets Get Started', async () => { let homePage = testCase.pages.homePage; console.log(`Customer for this test: ${customerDetails?.firstName} ${customerDetails?.lastName}`);