@spscommerce/e2e-core 2.2.0 → 2.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.eslintrc.js CHANGED
@@ -6,8 +6,6 @@ module.exports = {
6
6
  },
7
7
  "extends": [
8
8
  "eslint:recommended",
9
- "plugin:jest/recommended",
10
- "plugin:jest-playwright/recommended",
11
9
  "plugin:@typescript-eslint/recommended"
12
10
  ],
13
11
  "parser": "@typescript-eslint/parser",
@@ -17,11 +15,9 @@ module.exports = {
17
15
  },
18
16
  "plugins": [
19
17
  "@typescript-eslint",
20
- "jest"
21
18
  ],
22
19
  "rules": {
23
20
  "@typescript-eslint/no-explicit-any": "off",
24
21
  "@typescript-eslint/no-var-requires": "off",
25
- "jest/valid-expect": "off",
26
22
  }
27
23
  }
package/README.md CHANGED
@@ -39,7 +39,7 @@ HEADLESS=false BROWSER=chromium npm run test
39
39
  | ------------------: | -------------------------------------------------- | ------------------------------ | ------------------------------------ |
40
40
  | HEADLESS | launch browser in headless/headful mode | true | true, false |
41
41
  | BROWSER | use + as a separator, e.g edge+firefox | chromium | chromium, firefox, webkit, edge |
42
- | URL | auth state is invoked for the defined env | test | test, prod etc. |
42
+ | ENV | auth state is invoked for the defined env | test | test, prod etc. |
43
43
  | SLOWMO | slow down an execution for debugging | 0 | [number_in_ms] |
44
44
  | TIMEOUT | global timeout for each test | 30000 | [number_in_ms] |
45
45
  | WORKERS | number of workers (test threads) | number of CPUs minus 1 | [number] |
@@ -1,4 +1,27 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
@@ -6,6 +29,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
29
  const fs_1 = __importDefault(require("fs"));
7
30
  const path_1 = __importDefault(require("path"));
8
31
  const test_1 = require("@playwright/test");
32
+ const domain = 'commerce.spscommerce.com';
33
+ const baseUrl = process.env.ENV && process.env.ENV === 'prod' ? 'https://' + domain : 'https://test.' + domain;
9
34
  async function globalSetup() {
10
35
  // Remove custom sub-folders for test artifacts
11
36
  const resultsFolder = path_1.default.join(process.cwd(), 'results-e2e/');
@@ -25,7 +50,7 @@ async function globalSetup() {
25
50
  await context.tracing.start({ screenshots: true, snapshots: true });
26
51
  const page = await context.newPage();
27
52
  try {
28
- await page.goto(process.env.BASEURL);
53
+ await page.goto(baseUrl);
29
54
  await page.waitForURL(/https:\/\/auth.*/);
30
55
  await page.fill('input[type="email"]', process.env.USER_EMAIL);
31
56
  await page.click('button#btn-next');
@@ -41,10 +66,15 @@ async function globalSetup() {
41
66
  }
42
67
  await browser.close();
43
68
  }
44
- else {
45
- const stat = fs_1.default.statSync(storageFile);
46
- console.log(stat);
69
+ if (process.env.SETUP_PATH) {
70
+ if (fs_1.default.existsSync(process.env.SETUP_PATH)) {
71
+ await Promise.resolve().then(() => __importStar(require(process.env.SETUP_PATH)));
72
+ }
73
+ else {
74
+ throw new Error(`${process.env.SETUP_PATH} not found.`);
75
+ }
47
76
  }
77
+ return;
48
78
  }
49
79
  exports.default = globalSetup;
50
80
  //# sourceMappingURL=globalSetup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"globalSetup.js","sourceRoot":"","sources":["../helpers/globalSetup.ts"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,2CAA4C;AAE5C,KAAK,UAAU,WAAW;IACtB,+CAA+C;IAC/C,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;IAC/D,IAAI,YAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;QAC9B,KAAK,MAAM,SAAS,IAAI,YAAE,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE;YACnD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAAE,YAAE,CAAC,MAAM,CAAC,aAAa,GAAG,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aAAE;SAC/G;KACJ;IACD,gEAAgE;IAChE,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,oCAAoC,CAAC,CAAC;IACnF,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kCAAkC,CAAC,CAAC;IAC/E,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;QAC7B,MAAM,OAAO,GAAG,MAAM,eAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,sBAAsB;QAClF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;QAC3C,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI;YACA,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrC,MAAM,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;YAC1C,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC/D,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACpC,MAAM,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACrE,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACrC,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YACnC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;SAC5D;QAAC,OAAO,CAAC,EAAE;YACR,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;SACxE;QACD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;KACzB;SAAM;QACH,MAAM,IAAI,GAAG,YAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACrB;AACL,CAAC;AAED,kBAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"globalSetup.js","sourceRoot":"","sources":["../src/globalSetup.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ async function globalTeardown() {
19
19
  }
20
20
  }
21
21
  }
22
+ return;
22
23
  }
23
24
  exports.default = globalTeardown;
24
25
  //# sourceMappingURL=globalTeardown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"globalTeardown.js","sourceRoot":"","sources":["../helpers/globalTeardown.ts"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,gDAAwB;AAExB,KAAK,UAAU,cAAc;IACzB,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,0BAA0B,CAAC,CAAC;IACvE,YAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,IAAI,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QAC1B,KAAK,MAAM,YAAY,IAAI,YAAE,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;YAClD,KAAK,MAAM,OAAO,IAAI,YAAE,CAAC,WAAW,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,EAAE;gBACtE,MAAM,WAAW,GAAG,GAAG,SAAS,IAAI,YAAY,IAAI,OAAO,EAAE,CAAC;gBAC9D,MAAM,OAAO,GAAG,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACpI,MAAM,WAAW,GAAG,GAAG,SAAS,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;gBAC1E,YAAE,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;aAC7C;SACJ;KACJ;AACL,CAAC;AAED,kBAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"globalTeardown.js","sourceRoot":"","sources":["../src/globalTeardown.ts"],"names":[],"mappings":";;;;;AAAA,4CAAoB;AACpB,gDAAwB;AAExB,KAAK,UAAU,cAAc;IACzB,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,0BAA0B,CAAC,CAAC;IACvE,YAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,IAAI,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QAC1B,KAAK,MAAM,YAAY,IAAI,YAAE,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;YAClD,KAAK,MAAM,OAAO,IAAI,YAAE,CAAC,WAAW,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,EAAE;gBACtE,MAAM,WAAW,GAAG,GAAG,SAAS,IAAI,YAAY,IAAI,OAAO,EAAE,CAAC;gBAC9D,MAAM,OAAO,GAAG,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACpI,MAAM,WAAW,GAAG,GAAG,SAAS,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;gBAC1E,YAAE,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;aAC7C;SACJ;KACJ;IACD,OAAO;AACX,CAAC;AAED,kBAAe,cAAc,CAAC"}
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,mDAAiC;AACjC,gDAA8B;AAC9B,iDAAoD;AAA3C,wHAAA,OAAO,OAAU"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,mDAAiC;AACjC,gDAA8B;AAC9B,iDAAoD;AAA3C,wHAAA,OAAO,OAAU"}
@@ -26,7 +26,7 @@ async function enableLogger(file, page) {
26
26
  process.stdout.write = process.stderr.write = access.write.bind(access);
27
27
  // Write the GitHub link of the currently running test to the beginning of each log file
28
28
  console.log(`
29
- https://github.com/SPSCommerce/${process.env.REPONAME}/search?q=${test}`);
29
+ https://github.com/SPSCommerce/${process.env.REPO_NAME}/search?q=${test}`);
30
30
  // Listen for errors
31
31
  page
32
32
  .on('console', async (message) => {
@@ -1 +1 @@
1
- {"version":3,"file":"loggerSetup.js","sourceRoot":"","sources":["../helpers/loggerSetup.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AAGxB,IAAI,MAAW,CAAC;AAET,KAAK,UAAU,YAAY,CAAC,IAAc,EAAE,IAAU;IACzD,QAAQ;IACR,IAAI;IACJ,8CAA8C;IAC9C,0CAA0C;IAC1C,yBAAyB;IACzB,4DAA4D;IAC5D,IAAI;IACJ,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC;IACpC,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAErE,2CAA2C;IAC3C,YAAE,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEnD,kDAAkD;IAClD,MAAM,GAAG,YAAE,CAAC,iBAAiB,CAAC,GAAG,eAAe,IAAI,QAAQ,MAAM,CAAC,CAAA;IACnE,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAExE,wFAAwF;IACxF,OAAO,CAAC,GAAG,CAAC;qCACqB,OAAO,CAAC,GAAG,CAAC,QAAQ,aAAa,IAAI,EAAE,CAAC,CAAC;IAE1E,oBAAoB;IACpB,IAAI;SACC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;QAC3B,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,OAAO,EAAE;YAC5B,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,gBAAgB,EAAE;gBACrC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE;oBAC5B,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;aAC1C;YACD,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SACtE;IACL,CAAC,CAAC;SACD,EAAE,CAAC,eAAe,EAAE,OAAO,CAAC,EAAE,CAC3B,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,OAAO,EAAE,CAAC,SAAS,KAAK,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;SACrF,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE;QACrB,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;IAC/C,CAAC,CAAC;SACD,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;QACzB,IAAI,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE;YAC1B,OAAO,CAAC,GAAG,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,KAAK,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;SAC9E;IACL,CAAC,CAAC,CAAA;IACN,OAAO;AACX,CAAC;AA9CD,oCA8CC;AAEM,KAAK,UAAU,aAAa;IAC/B,uBAAuB;IACvB,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;IACvB,OAAO;AACX,CAAC;AAJD,sCAIC"}
1
+ {"version":3,"file":"loggerSetup.js","sourceRoot":"","sources":["../src/loggerSetup.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AAGxB,IAAI,MAAW,CAAC;AAET,KAAK,UAAU,YAAY,CAAC,IAAc,EAAE,IAAU;IACzD,QAAQ;IACR,IAAI;IACJ,8CAA8C;IAC9C,0CAA0C;IAC1C,yBAAyB;IACzB,4DAA4D;IAC5D,IAAI;IACJ,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC;IACpC,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAErE,2CAA2C;IAC3C,YAAE,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEnD,kDAAkD;IAClD,MAAM,GAAG,YAAE,CAAC,iBAAiB,CAAC,GAAG,eAAe,IAAI,QAAQ,MAAM,CAAC,CAAA;IACnE,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAExE,wFAAwF;IACxF,OAAO,CAAC,GAAG,CAAC;qCACqB,OAAO,CAAC,GAAG,CAAC,SAAS,aAAa,IAAI,EAAE,CAAC,CAAC;IAE3E,oBAAoB;IACpB,IAAI;SACC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;QAC3B,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,OAAO,EAAE;YAC5B,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,gBAAgB,EAAE;gBACrC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE;oBAC5B,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;aAC1C;YACD,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SACtE;IACL,CAAC,CAAC;SACD,EAAE,CAAC,eAAe,EAAE,OAAO,CAAC,EAAE,CAC3B,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,OAAO,EAAE,CAAC,SAAS,KAAK,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;SACrF,EAAE,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE;QACrB,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;IAC/C,CAAC,CAAC;SACD,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;QACzB,IAAI,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE;YAC1B,OAAO,CAAC,GAAG,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,KAAK,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;SAC9E;IACL,CAAC,CAAC,CAAA;IACN,OAAO;AACX,CAAC;AA9CD,oCA8CC;AAEM,KAAK,UAAU,aAAa;IAC/B,uBAAuB;IACvB,MAAM,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;IACvB,OAAO;AACX,CAAC;AAJD,sCAIC"}
@@ -1 +1 @@
1
- {"version":3,"file":"matchersSetup.js","sourceRoot":"","sources":["../helpers/matchersSetup.ts"],"names":[],"mappings":";;;;;AAAA,2CAAwC;AACxC,uGAA4E;AAE5E,MAAM,MAAM,GAAG,IAAA,wBAAW,EAAC,WAAI,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAC1C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAExB,kBAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"matchersSetup.js","sourceRoot":"","sources":["../src/matchersSetup.ts"],"names":[],"mappings":";;;;;AAAA,2CAAwC;AACxC,uGAA4E;AAE5E,MAAM,MAAM,GAAG,IAAA,wBAAW,EAAC,WAAI,CAAC,MAAM,CAAC,CAAC;AAExC,MAAM,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAC1C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAExB,kBAAe,MAAM,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spscommerce/e2e-core",
3
- "version": "2.2.0",
3
+ "version": "2.2.3",
4
4
  "description": "An automation test framework which is based on Playwright.",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -28,6 +28,7 @@
28
28
  "@playwright/test": "^1.22.0-alpha-apr-10-2022",
29
29
  "@typescript-eslint/eslint-plugin": "^4.33.0",
30
30
  "@typescript-eslint/parser": "^4.33.0",
31
+ "dotenv": "^16.0.0",
31
32
  "eslint": "^7.32.0",
32
33
  "jest-extended": "^1.2.0",
33
34
  "typescript": "^4.4.4"
@@ -0,0 +1,94 @@
1
+ const path = require('path');
2
+
3
+ if (process.env.CONFIG_PATH) {
4
+ require('dotenv').config({ path: process.env.CONFIG_PATH });
5
+ }
6
+
7
+ const reportName = process.env.SUITE ? `${process.env.SUITE}.xml` : `TEST-result.xml`;
8
+
9
+ let browserProject = [];
10
+ switch (process.env.BROWSER) {
11
+ case 'chromium':
12
+ case 'firefox':
13
+ case 'webkit':
14
+ browserProject = [{
15
+ name: process.env.BROWSER,
16
+ use: {
17
+ browserName: process.env.BROWSER,
18
+ },
19
+ }];
20
+ break;
21
+ case 'msedge':
22
+ case 'chrome':
23
+ browserProject = [{
24
+ name: process.env.BROWSER,
25
+ use: {
26
+ channel: process.env.BROWSER,
27
+ },
28
+ }];
29
+ break;
30
+ default:
31
+ browserProject = [{
32
+ name: 'chromium',
33
+ use: {
34
+ browserName: 'chromium',
35
+ },
36
+ }];
37
+ break;
38
+ }
39
+
40
+ /**
41
+ * See https://playwright.dev/docs/test-configuration.
42
+ */
43
+
44
+ // @ts-check
45
+ /** @type {import('@playwright/test').PlaywrightTestConfig} */
46
+ const config = {
47
+ testDir: process.env.TEST_DIR,
48
+
49
+ /* Maximum time one test can run for. */
50
+ timeout: +process.env.TIMEOUT || 30000,
51
+ expect: {
52
+ /**
53
+ * Maximum time expect() should wait for the condition to be met.
54
+ * For example in `await expect(locator).toHaveText();`
55
+ */
56
+ timeout: 5000
57
+ },
58
+ /* Fail the build on CI if you accidentally left test.only in the source code. */
59
+ forbidOnly: !!process.env.CI,
60
+ /* Retry on CI only */
61
+ retries: +process.env.RETRIES || 0,
62
+ /* Opt out of parallel tests on CI. */
63
+ workers: +process.env.WORKERS || 1,
64
+ /* Stop test suite execution after reaching this number of failed tests and skip any tests that were not executed yet. */
65
+ maxFailures: process.env.CI ? 5 : 0,
66
+ /* Reporter to use. See https://playwright.dev/docs/test-reporters */
67
+ reporter: [
68
+ ['junit', { outputFile: path.join(process.cwd(), `results-e2e/reports/${reportName}`) }],
69
+ ['list']
70
+ ],
71
+ globalSetup: require.resolve('./lib/globalSetup'),
72
+ globalTeardown: require.resolve('./lib/globalTeardown'),
73
+ /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
74
+ use: {
75
+ storageState: path.join(process.cwd(), 'results-e2e/auth/storageState.json'),
76
+ /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */
77
+ actionTimeout: 30000,
78
+ /* Collect screenshot after each test failure. See https://playwright.dev/docs/test-configuration#automatic-screenshots */
79
+ screenshot: 'only-on-failure',
80
+ /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
81
+ trace: process.env.TRACER ? 'retain-on-failure' : 'off',
82
+ // Run in headless mode by default (if process.env.HEADLESS is not specified)
83
+ headless: !process.env.HEADLESS || process.env.HEADLESS === 'true' ? true : false,
84
+ ignoreHTTPSErrors: true,
85
+ /* Base URL to use in actions like `await page.goto('/')`. */
86
+ // baseURL: 'http://localhost:3000',
87
+ },
88
+ /* Configure projects for major browsers */
89
+ projects: browserProject,
90
+ /* Folder for test artifacts such as screenshots, videos, traces, etc. (cleaned at the start) */
91
+ outputDir: path.join(process.cwd(), 'results-e2e-raw/')
92
+ };
93
+
94
+ module.exports = config;
@@ -2,6 +2,9 @@ import fs from 'fs';
2
2
  import path from 'path';
3
3
  import { chromium } from '@playwright/test';
4
4
 
5
+ const domain = 'commerce.spscommerce.com';
6
+ const baseUrl = process.env.ENV && process.env.ENV === 'prod' ? 'https://' + domain : 'https://test.' + domain;
7
+
5
8
  async function globalSetup() {
6
9
  // Remove custom sub-folders for test artifacts
7
10
  const resultsFolder = path.join(process.cwd(), 'results-e2e/');
@@ -19,7 +22,7 @@ async function globalSetup() {
19
22
  await context.tracing.start({ screenshots: true, snapshots: true });
20
23
  const page = await context.newPage();
21
24
  try {
22
- await page.goto(process.env.BASEURL);
25
+ await page.goto(baseUrl);
23
26
  await page.waitForURL(/https:\/\/auth.*/);
24
27
  await page.fill('input[type="email"]', process.env.USER_EMAIL);
25
28
  await page.click('button#btn-next');
@@ -33,10 +36,15 @@ async function globalSetup() {
33
36
  throw new Error('Error occurred while running globalSetup.ts file.');
34
37
  }
35
38
  await browser.close();
36
- } else {
37
- const stat = fs.statSync(storageFile);
38
- console.log(stat);
39
39
  }
40
+ if (process.env.SETUP_PATH) {
41
+ if (fs.existsSync(process.env.SETUP_PATH)) {
42
+ await import(process.env.SETUP_PATH);
43
+ } else {
44
+ throw new Error(`${process.env.SETUP_PATH} not found.`);
45
+ }
46
+ }
47
+ return;
40
48
  }
41
49
 
42
50
  export default globalSetup;
@@ -15,6 +15,7 @@ async function globalTeardown() {
15
15
  }
16
16
  }
17
17
  }
18
+ return;
18
19
  }
19
20
 
20
21
  export default globalTeardown;
File without changes
@@ -26,7 +26,7 @@ export async function enableLogger(file: string[], page: Page): Promise<void> {
26
26
 
27
27
  // Write the GitHub link of the currently running test to the beginning of each log file
28
28
  console.log(`
29
- https://github.com/SPSCommerce/${process.env.REPONAME}/search?q=${test}`);
29
+ https://github.com/SPSCommerce/${process.env.REPO_NAME}/search?q=${test}`);
30
30
 
31
31
  // Listen for errors
32
32
  page
File without changes
package/tsconfig.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "include": ["./helpers"],
2
+ "include": ["./src"],
3
3
  "compilerOptions": {
4
4
  "target": "esnext",
5
5
  "module": "commonjs",
@@ -1,91 +0,0 @@
1
- import type { PlaywrightTestConfig } from '@playwright/test';
2
- import path from 'path';
3
-
4
- const reportName = process.env.SUITE ? `${process.env.SUITE}.xml` : `TEST-result.xml`;
5
-
6
- let browserProject = [];
7
- switch (process.env.BROWSER) {
8
- case 'chromium':
9
- case 'firefox':
10
- case 'webkit':
11
- browserProject = [{
12
- name: process.env.BROWSER,
13
- use: {
14
- browserName: process.env.BROWSER,
15
- },
16
- }];
17
- break;
18
- case 'msedge':
19
- case 'chrome':
20
- browserProject = [{
21
- name: process.env.BROWSER,
22
- use: {
23
- channel: process.env.BROWSER,
24
- },
25
- }];
26
- break;
27
- default:
28
- browserProject = [{
29
- name: 'chromium',
30
- use: {
31
- browserName: 'chromium',
32
- },
33
- }];
34
- break;
35
- }
36
-
37
- const domain = 'commerce.spscommerce.com';
38
- process.env.BASEURL = process.env.URL && process.env.URL === 'prod' ? 'https://' + domain : 'https://test.' + domain;
39
-
40
- /**
41
- * See https://playwright.dev/docs/test-configuration.
42
- */
43
- const config: PlaywrightTestConfig = {
44
- testDir: '../tests-e2e',
45
- //testDir: './tests-e2e',
46
- /* Maximum time one test can run for. */
47
- timeout: +process.env.TIMEOUT || 30000,
48
- expect: {
49
- /**
50
- * Maximum time expect() should wait for the condition to be met.
51
- * For example in `await expect(locator).toHaveText();`
52
- */
53
- timeout: 5000
54
- },
55
- /* Fail the build on CI if you accidentally left test.only in the source code. */
56
- forbidOnly: !!process.env.CI,
57
- /* Retry on CI only */
58
- retries: +process.env.RETRIES || 0,
59
- /* Opt out of parallel tests on CI. */
60
- workers: +process.env.WORKERS || 1,
61
- /* Stop test suite execution after reaching this number of failed tests and skip any tests that were not executed yet. */
62
- maxFailures: process.env.CI ? 5 : 0,
63
- /* Reporter to use. See https://playwright.dev/docs/test-reporters */
64
- reporter: [
65
- ['junit', { outputFile: path.join(process.cwd(), `results-e2e/reports/${reportName}`) }],
66
- ['list']
67
- ],
68
- globalSetup: './helpers/globalSetup',
69
- globalTeardown: './helpers/globalTeardown',
70
- /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
71
- use: {
72
- storageState: path.join(process.cwd(), 'results-e2e/auth/storageState.json'),
73
- /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */
74
- actionTimeout: 30000,
75
- /* Collect screenshot after each test failure. See https://playwright.dev/docs/test-configuration#automatic-screenshots */
76
- screenshot: 'only-on-failure',
77
- /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
78
- trace: process.env.TRACER ? 'retain-on-failure' : 'off',
79
- // Run in headless mode by default (if process.env.HEADLESS is not specified)
80
- headless: !process.env.HEADLESS || process.env.HEADLESS === 'true' ? true : false,
81
- ignoreHTTPSErrors: true,
82
- /* Base URL to use in actions like `await page.goto('/')`. */
83
- // baseURL: 'http://localhost:3000',
84
- },
85
- /* Configure projects for major browsers */
86
- projects: browserProject,
87
- /* Folder for test artifacts such as screenshots, videos, traces, etc. (cleaned at the start) */
88
- outputDir: path.join(process.cwd(), 'results-e2e-raw/'),
89
- };
90
-
91
- export default config;
@@ -1,2 +0,0 @@
1
- <testsuites id="" name="" tests="0" failures="0" skipped="0" errors="0" time="0.001">
2
- </testsuites>