@brillout/test-e2e 0.6.14 → 0.6.15-commit-acebd7f

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.
@@ -1,7 +1,14 @@
1
1
  export { isTolerateError };
2
+ export type { TolerateError };
3
+ import { type TestInfo } from '../getCurrentTest.js';
2
4
  import type { LogSource } from '../Logs.js';
3
5
  type LogData = {
4
6
  logSource: LogSource;
5
7
  logText: string;
6
8
  };
9
+ type TolerateError = true | ((args: {
10
+ logSource: LogSource;
11
+ logText: string;
12
+ testInfo: null | TestInfo;
13
+ }) => boolean | undefined);
7
14
  declare function isTolerateError({ logSource, logText }: LogData): boolean;
@@ -8,13 +8,18 @@ function isTolerateError({ logSource, logText }) {
8
8
  return true;
9
9
  }
10
10
  const testInfo = getCurrentTestOptional();
11
+ const isTolerated = (tolerateError) => {
12
+ if (tolerateError === true)
13
+ return true;
14
+ if (tolerateError?.({ logSource, logText, testInfo })) {
15
+ return true;
16
+ }
17
+ };
11
18
  const config = getConfig();
12
- const { tolerateError } = config;
13
- if (tolerateError === true)
19
+ if (isTolerated(config.tolerateError))
14
20
  return true;
15
- if (tolerateError?.({ logSource, logText, testInfo })) {
21
+ if (isTolerated(testInfo?.runInfo?.tolerateError))
16
22
  return true;
17
- }
18
23
  return false;
19
24
  }
20
25
  function tolerateErrorBuiltIn({ logSource, logText }) {
package/dist/fetch.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- export { fetch };
1
+ export { fetchAndLogError as fetch };
2
2
  export { fetchHtml };
3
- import type { RequestInfo, RequestInit, Response } from 'node-fetch';
4
3
  declare function fetchHtml(pathname: string): Promise<string>;
5
- declare function fetch(url: RequestInfo, init?: RequestInit): Promise<Response>;
4
+ declare function fetchAndLogError(...args: Parameters<typeof fetch>): Promise<Response>;
package/dist/fetch.js CHANGED
@@ -1,33 +1,22 @@
1
- export { fetch };
1
+ export { fetchAndLogError as fetch };
2
2
  export { fetchHtml };
3
3
  import { getServerUrl } from './getCurrentTest.js';
4
- import fetch_ from 'node-fetch';
5
4
  import { Logs } from './Logs.js';
6
5
  async function fetchHtml(pathname) {
7
- const response = await fetch(getServerUrl() + pathname);
6
+ const response = await fetchAndLogError(getServerUrl() + pathname);
8
7
  const html = await response.text();
9
8
  return html;
10
9
  }
11
- async function fetch(url, init) {
10
+ async function fetchAndLogError(...args) {
12
11
  try {
13
- // @ts-ignore
14
- //
15
- // I don't know why but [transition to ESM](https://github.com/brillout/test-e2e/commit/9b0822a4f5bf787de5a150173f3eeffcfa7ebc5c) broke the default importing of the node-fetch types.
16
- //
17
- // The following used to work but doens't anymore:
18
- // ```js
19
- // async function fetch(...args: Parameters<typeof fetch_>) {
20
- // // ...
21
- // }
22
- // ```
23
- return await fetch_(url, init);
12
+ return await fetch(...args);
24
13
  }
25
14
  catch (err) {
15
+ const url = args[0];
16
+ const init = args[1];
26
17
  Logs.add({
27
18
  logSource: 'Connection Error',
28
- logText: `Couldn't connect to \`${url}\`. Args: \`${JSON.stringify(init)}\`. Err: \`${
29
- // @ts-ignore
30
- err.message}\``,
19
+ logText: `Couldn't connect to \`${url}\`. Args: \`${JSON.stringify(init)}\`. Err: \`${err.message}\``,
31
20
  });
32
21
  throw new Error("Couldn't connect to server. See `Connection Error` log for more details.");
33
22
  }
@@ -1,8 +1,9 @@
1
1
  export { getConfig };
2
2
  export { loadConfig };
3
3
  import type { LaunchOptions } from 'playwright-chromium';
4
+ import type { TolerateError } from './Logs/isTolerateError.js';
4
5
  type Config = {
5
- tolerateError?: Function | true;
6
+ tolerateError?: TolerateError;
6
7
  ci?: never;
7
8
  chromiumLaunchOptions?: LaunchOptions;
8
9
  };
@@ -7,6 +7,7 @@ export { getCwd };
7
7
  export { getServerUrl };
8
8
  export type { TestInfo };
9
9
  import type { Page } from 'playwright-chromium';
10
+ import type { TolerateError } from './Logs/isTolerateError.js';
10
11
  type TestInfo = {
11
12
  testFile: string;
12
13
  testName: string;
@@ -16,14 +17,14 @@ type TestInfo = {
16
17
  testFn: Function;
17
18
  }[];
18
19
  testOptions?: {
19
- doNotFailOnWarning: boolean;
20
+ tolerateError?: TolerateError;
20
21
  testFunctionTimeout: number;
21
22
  isFlaky: boolean;
22
23
  };
23
24
  runInfo?: {
24
25
  cmd: string;
25
26
  serverUrl: string;
26
- doNotFailOnWarning: boolean;
27
+ tolerateError?: TolerateError;
27
28
  testFunctionTimeout: number;
28
29
  isFlaky: boolean;
29
30
  isRunCommandThatTerminates: boolean;
@@ -44,16 +45,16 @@ declare function setCurrentTest(testFile: null | string): void;
44
45
  declare function getRunInfo(): {
45
46
  cmd: string;
46
47
  serverUrl: string;
47
- doNotFailOnWarning: boolean;
48
+ tolerateError?: TolerateError | undefined;
48
49
  testFunctionTimeout: number;
49
50
  isFlaky: boolean;
50
51
  isRunCommandThatTerminates: boolean;
51
52
  };
52
- declare function setRunInfo({ cmd, serverUrl, additionalTimeout, doNotFailOnWarning, isFlaky, isRunCommandThatTerminates, }: {
53
+ declare function setRunInfo({ cmd, serverUrl, additionalTimeout, tolerateError, isFlaky, isRunCommandThatTerminates, }: {
53
54
  cmd: string;
54
55
  serverUrl?: string;
55
56
  additionalTimeout?: number;
56
- doNotFailOnWarning?: boolean;
57
+ tolerateError?: TolerateError;
57
58
  isFlaky?: boolean;
58
59
  isRunCommandThatTerminates?: boolean;
59
60
  }): void;
@@ -48,14 +48,14 @@ function getRunInfo() {
48
48
  return testInfo.runInfo;
49
49
  }
50
50
  const serverUrlDefault = 'http://localhost:3000';
51
- function setRunInfo({ cmd, serverUrl = serverUrlDefault, additionalTimeout = 0, doNotFailOnWarning = false, isFlaky = false, isRunCommandThatTerminates = false, }) {
51
+ function setRunInfo({ cmd, serverUrl = serverUrlDefault, additionalTimeout = 0, tolerateError, isFlaky = false, isRunCommandThatTerminates = false, }) {
52
52
  const testInfo = getCurrentTest();
53
53
  const testFunctionTimeout = TIMEOUT_TEST_FUNCTION + additionalTimeout;
54
54
  testInfo.runInfo = {
55
55
  cmd,
56
56
  serverUrl,
57
57
  testFunctionTimeout,
58
- doNotFailOnWarning,
58
+ tolerateError,
59
59
  isFlaky,
60
60
  isRunCommandThatTerminates,
61
61
  };
package/dist/index.d.ts CHANGED
@@ -13,3 +13,4 @@ export { skip } from './skip.js';
13
13
  export { isMinNodeVersion, isCI, isLinux, isWindows, isMac, sleep } from './utils.js';
14
14
  export { getServerUrl } from './getCurrentTest.js';
15
15
  export { runCommandThatTerminates } from './runCommandThatTerminates.js';
16
+ export type { TolerateError } from './Logs/isTolerateError.js';
package/dist/run.d.ts CHANGED
@@ -1,12 +1,13 @@
1
1
  export { run };
2
- declare function run(cmd: string, { additionalTimeout, serverIsReadyMessage, serverIsReadyDelay, inspect, cwd, doNotFailOnWarning, serverUrl, isFlaky, }?: {
2
+ import type { TolerateError } from './Logs/isTolerateError.js';
3
+ declare function run(cmd: string, { additionalTimeout, serverIsReadyMessage, serverIsReadyDelay, inspect, cwd, tolerateError, serverUrl, isFlaky, }?: {
3
4
  additionalTimeout?: number;
4
5
  serverIsReadyMessage?: string | ((log: string) => boolean);
5
6
  serverIsReadyDelay?: number;
6
7
  inspect?: boolean;
7
8
  /** deprecated */
8
9
  cwd?: string;
9
- doNotFailOnWarning?: boolean;
10
+ tolerateError?: TolerateError;
10
11
  serverUrl?: string;
11
12
  isFlaky?: boolean;
12
13
  }): void;
package/dist/run.js CHANGED
@@ -8,14 +8,14 @@ import { page } from './page.js';
8
8
  import { TIMEOUT_NPM_SCRIPT, TIMEOUT_PLAYWRIGHT, TIMEOUT_PROCESS_TERMINATION } from './TIMEOUTS.js';
9
9
  function run(cmd, {
10
10
  //baseUrl = '',
11
- additionalTimeout = 0, serverIsReadyMessage, serverIsReadyDelay = 1000, inspect = cliOptions.inspect, cwd, doNotFailOnWarning, serverUrl, isFlaky, } = {}) {
11
+ additionalTimeout = 0, serverIsReadyMessage, serverIsReadyDelay = 1000, inspect = cliOptions.inspect, cwd, tolerateError, serverUrl, isFlaky, } = {}) {
12
12
  assert(cwd === undefined);
13
13
  additionalTimeout += serverIsReadyDelay;
14
14
  setRunInfo({
15
15
  cmd,
16
16
  serverUrl,
17
17
  additionalTimeout,
18
- doNotFailOnWarning,
18
+ tolerateError,
19
19
  isFlaky,
20
20
  });
21
21
  if (inspect) {
package/dist/runAll.js CHANGED
@@ -184,10 +184,9 @@ async function runTests(testInfo, isFinalAttempt) {
184
184
  done(!!err);
185
185
  testInfo.afterEach(!!err);
186
186
  {
187
- const failOnWarning = !testInfo.runInfo.doNotFailOnWarning;
188
187
  const isFailureFromLogs = Logs.hasFailureLog({
189
- includeBrowserWarnings: failOnWarning,
190
- includeStderr: failOnWarning,
188
+ includeBrowserWarnings: true,
189
+ includeStderr: true,
191
190
  });
192
191
  const isFailure = err || isFailureFromLogs;
193
192
  if (isFailure) {
@@ -208,7 +207,8 @@ async function runTests(testInfo, isFinalAttempt) {
208
207
  logFailure(err, `the test "${testDesc}" threw an error`, isFinalAttempt);
209
208
  }
210
209
  else {
211
- assert(Logs.hasFailureLog({ includeBrowserWarnings: failOnWarning, includeStderr: true }));
210
+ assert(Logs.hasFailureLog({ includeBrowserWarnings: true, includeStderr: true }));
211
+ const failOnWarning = testInfo.runInfo.tolerateError !== true;
212
212
  logFailure(null, `${getErrorType(failOnWarning)} occurred while running the test "${testDesc}"`, isFinalAttempt);
213
213
  }
214
214
  return false;
@@ -1,4 +1,5 @@
1
1
  export { runCommand };
2
+ // TO-DO/eventually: use @brillout/shell
2
3
  import { exec } from 'child_process';
3
4
  import { genPromise } from './genPromise.js';
4
5
  import { humanizeTime } from './humanizeTime.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brillout/test-e2e",
3
- "version": "0.6.14",
3
+ "version": "0.6.15-commit-acebd7f",
4
4
  "bin": "./bin.js",
5
5
  "main": "./dist/index.js",
6
6
  "type": "module",
@@ -10,7 +10,6 @@
10
10
  "chai": "^4.3.6",
11
11
  "esbuild": "^0.23.0",
12
12
  "fast-glob": "^3.2.12",
13
- "node-fetch": "^2.6.1",
14
13
  "pixelmatch": "^5.3.0",
15
14
  "playwright-chromium": "^1.22.2",
16
15
  "pngjs": "^6.0.0",
@@ -22,7 +21,6 @@
22
21
  "@brillout/release-me": "^0.4.3",
23
22
  "@types/chai": "^4.3.3",
24
23
  "@types/node": "^15.6.1",
25
- "@types/node-fetch": "^2.5.12",
26
24
  "@types/pixelmatch": "^5.2.4",
27
25
  "@types/pngjs": "^6.0.1",
28
26
  "@types/source-map-support": "^0.5.6",