@brillout/test-e2e 0.5.9 → 0.5.10
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/dist/Logs.d.ts +2 -2
- package/dist/Logs.js +15 -7
- package/dist/fetch.d.ts +5 -0
- package/dist/fetch.js +30 -0
- package/dist/getCurrentTest.d.ts +2 -0
- package/dist/getCurrentTest.js +7 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.js +25 -16
- package/dist/run.d.ts +12 -0
- package/dist/{setup.js → run.js} +14 -90
- package/dist/runAll.js +16 -16
- package/dist/skip.d.ts +2 -0
- package/dist/skip.js +9 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/isMinNodeVersion.d.ts +2 -0
- package/dist/utils/isMinNodeVersion.js +12 -0
- package/package.json +1 -1
- package/dist/setup.d.ts +0 -33
package/dist/Logs.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { expectLog };
|
|
2
2
|
export declare const Logs: {
|
|
3
3
|
add: typeof add;
|
|
4
4
|
flushLogs: typeof flushLogs;
|
|
@@ -25,4 +25,4 @@ declare function add({ logSource, logText, loggedAfterExit, }: {
|
|
|
25
25
|
logText: string;
|
|
26
26
|
loggedAfterExit?: boolean;
|
|
27
27
|
}): void;
|
|
28
|
-
declare function
|
|
28
|
+
declare function expectLog(logText: string, logFilter?: (logEntry: LogEntry) => boolean): void;
|
package/dist/Logs.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.Logs = exports.
|
|
6
|
+
exports.Logs = exports.expectLog = void 0;
|
|
7
7
|
exports.Logs = {
|
|
8
8
|
add,
|
|
9
9
|
flushLogs,
|
|
@@ -17,7 +17,7 @@ const picocolors_1 = __importDefault(require("picocolors"));
|
|
|
17
17
|
const getCurrentTest_1 = require("./getCurrentTest");
|
|
18
18
|
const logSection_1 = require("./logSection");
|
|
19
19
|
const isTolerateError_1 = require("./Logs/isTolerateError");
|
|
20
|
-
const
|
|
20
|
+
const strip_ansi_1 = __importDefault(require("strip-ansi"));
|
|
21
21
|
let logEntries = [];
|
|
22
22
|
function hasFailLogs(failOnWarning) {
|
|
23
23
|
const failLogs = getErrorLogs(failOnWarning);
|
|
@@ -75,17 +75,25 @@ function add({ logSource, logText, loggedAfterExit = false, }) {
|
|
|
75
75
|
printLog(logEntry);
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
|
-
function
|
|
79
|
-
const
|
|
80
|
-
if (
|
|
78
|
+
function expectLog(logText, logFilter) {
|
|
79
|
+
const logsFound = logEntries.filter((logEntry) => {
|
|
80
|
+
if ((0, strip_ansi_1.default)(logEntry.logText).includes(logText)) {
|
|
81
81
|
logEntry.isNotFailure = true;
|
|
82
82
|
return true;
|
|
83
83
|
}
|
|
84
84
|
return false;
|
|
85
85
|
});
|
|
86
|
-
|
|
86
|
+
const logsFoundWithFilter = logsFound.filter((logEntry) => logFilter?.(logEntry));
|
|
87
|
+
if (logsFoundWithFilter.length === 0) {
|
|
88
|
+
if (logsFound.length === 0) {
|
|
89
|
+
throw new Error(`The following log was expected but wasn't logged: "${logText}"`);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
throw new Error(`The following log was logged as expected, but it didn't match the logFilter() you provided`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
87
95
|
}
|
|
88
|
-
exports.
|
|
96
|
+
exports.expectLog = expectLog;
|
|
89
97
|
function getTimestamp() {
|
|
90
98
|
const now = new Date();
|
|
91
99
|
const time = now.toTimeString().split(' ')[0];
|
package/dist/fetch.d.ts
ADDED
package/dist/fetch.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.fetchHtml = exports.fetch = void 0;
|
|
7
|
+
const getCurrentTest_1 = require("./getCurrentTest");
|
|
8
|
+
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
9
|
+
const Logs_1 = require("./Logs");
|
|
10
|
+
async function fetchHtml(pathname) {
|
|
11
|
+
const response = await fetch((0, getCurrentTest_1.getServerUrl)() + pathname);
|
|
12
|
+
const html = await response.text();
|
|
13
|
+
return html;
|
|
14
|
+
}
|
|
15
|
+
exports.fetchHtml = fetchHtml;
|
|
16
|
+
async function fetch(...args) {
|
|
17
|
+
try {
|
|
18
|
+
return await (0, node_fetch_1.default)(...args);
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
Logs_1.Logs.add({
|
|
22
|
+
logSource: 'Connection Error',
|
|
23
|
+
logText: `Couldn't connect to \`${args[0]}\`. Args: \`${JSON.stringify(args.slice(1))}\`. Err: \`${
|
|
24
|
+
// @ts-ignore
|
|
25
|
+
err.message}\``,
|
|
26
|
+
});
|
|
27
|
+
throw new Error("Couldn't connect to server. See `Connection Error` log for more details.");
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.fetch = fetch;
|
package/dist/getCurrentTest.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export { setCurrentTest };
|
|
|
4
4
|
export { getRunInfo };
|
|
5
5
|
export { setRunInfo };
|
|
6
6
|
export { getCwd };
|
|
7
|
+
export { getServerUrl };
|
|
7
8
|
export type { TestInfo };
|
|
8
9
|
import type { Page } from 'playwright-chromium';
|
|
9
10
|
declare type TestInfo = {
|
|
@@ -55,3 +56,4 @@ declare function setRunInfo({ cmd, serverUrl, additionalTimeout, doNotFailOnWarn
|
|
|
55
56
|
isRunCommandThatTerminates?: boolean;
|
|
56
57
|
}): void;
|
|
57
58
|
declare function getCwd(): string;
|
|
59
|
+
declare function getServerUrl(): string;
|
package/dist/getCurrentTest.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getCwd = exports.setRunInfo = exports.getRunInfo = exports.setCurrentTest = exports.getCurrentTestOptional = exports.getCurrentTest = void 0;
|
|
6
|
+
exports.getServerUrl = exports.getCwd = exports.setRunInfo = exports.getRunInfo = exports.setCurrentTest = exports.getCurrentTestOptional = exports.getCurrentTest = void 0;
|
|
7
7
|
const utils_1 = require("./utils");
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
const TIMEOUTS_1 = require("./TIMEOUTS");
|
|
@@ -69,3 +69,9 @@ function getCwd() {
|
|
|
69
69
|
return cwd;
|
|
70
70
|
}
|
|
71
71
|
exports.getCwd = getCwd;
|
|
72
|
+
function getServerUrl() {
|
|
73
|
+
const testInfo = getCurrentTest();
|
|
74
|
+
const serverUrl = testInfo.runInfo?.serverUrl;
|
|
75
|
+
return serverUrl;
|
|
76
|
+
}
|
|
77
|
+
exports.getServerUrl = getServerUrl;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
|
-
export * from './setup';
|
|
2
1
|
export { expect } from './chai/expect';
|
|
3
2
|
export { test } from './test';
|
|
4
3
|
export { page } from './page';
|
|
5
4
|
export { editFile, editFileRevert } from './editFile';
|
|
6
5
|
export { testScreenshotFixture } from './testScreenshotFixture';
|
|
6
|
+
export { partRegex } from '@brillout/part-regex';
|
|
7
|
+
export { autoRetry } from './autoRetry';
|
|
8
|
+
export { fetch, fetchHtml } from './fetch';
|
|
9
|
+
export { expectLog } from './Logs';
|
|
10
|
+
export { run } from './run';
|
|
11
|
+
export { skip } from './skip';
|
|
12
|
+
export { isMinNodeVersion, isCI, isLinux, isWindows, isMac, sleep } from './utils';
|
|
13
|
+
export { getServerUrl } from './getCurrentTest';
|
|
14
|
+
export { runCommandThatTerminates } from './runCommandThatTerminates';
|
package/dist/index.js
CHANGED
|
@@ -1,21 +1,6 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.testScreenshotFixture = exports.editFileRevert = exports.editFile = exports.page = exports.test = exports.expect = void 0;
|
|
18
|
-
__exportStar(require("./setup"), exports);
|
|
3
|
+
exports.runCommandThatTerminates = exports.getServerUrl = exports.sleep = exports.isMac = exports.isWindows = exports.isLinux = exports.isCI = exports.isMinNodeVersion = exports.skip = exports.run = exports.expectLog = exports.fetchHtml = exports.fetch = exports.autoRetry = exports.partRegex = exports.testScreenshotFixture = exports.editFileRevert = exports.editFile = exports.page = exports.test = exports.expect = void 0;
|
|
19
4
|
var expect_1 = require("./chai/expect");
|
|
20
5
|
Object.defineProperty(exports, "expect", { enumerable: true, get: function () { return expect_1.expect; } });
|
|
21
6
|
var test_1 = require("./test");
|
|
@@ -27,3 +12,27 @@ Object.defineProperty(exports, "editFile", { enumerable: true, get: function ()
|
|
|
27
12
|
Object.defineProperty(exports, "editFileRevert", { enumerable: true, get: function () { return editFile_1.editFileRevert; } });
|
|
28
13
|
var testScreenshotFixture_1 = require("./testScreenshotFixture");
|
|
29
14
|
Object.defineProperty(exports, "testScreenshotFixture", { enumerable: true, get: function () { return testScreenshotFixture_1.testScreenshotFixture; } });
|
|
15
|
+
var part_regex_1 = require("@brillout/part-regex");
|
|
16
|
+
Object.defineProperty(exports, "partRegex", { enumerable: true, get: function () { return part_regex_1.partRegex; } });
|
|
17
|
+
var autoRetry_1 = require("./autoRetry");
|
|
18
|
+
Object.defineProperty(exports, "autoRetry", { enumerable: true, get: function () { return autoRetry_1.autoRetry; } });
|
|
19
|
+
var fetch_1 = require("./fetch");
|
|
20
|
+
Object.defineProperty(exports, "fetch", { enumerable: true, get: function () { return fetch_1.fetch; } });
|
|
21
|
+
Object.defineProperty(exports, "fetchHtml", { enumerable: true, get: function () { return fetch_1.fetchHtml; } });
|
|
22
|
+
var Logs_1 = require("./Logs");
|
|
23
|
+
Object.defineProperty(exports, "expectLog", { enumerable: true, get: function () { return Logs_1.expectLog; } });
|
|
24
|
+
var run_1 = require("./run");
|
|
25
|
+
Object.defineProperty(exports, "run", { enumerable: true, get: function () { return run_1.run; } });
|
|
26
|
+
var skip_1 = require("./skip");
|
|
27
|
+
Object.defineProperty(exports, "skip", { enumerable: true, get: function () { return skip_1.skip; } });
|
|
28
|
+
var utils_1 = require("./utils");
|
|
29
|
+
Object.defineProperty(exports, "isMinNodeVersion", { enumerable: true, get: function () { return utils_1.isMinNodeVersion; } });
|
|
30
|
+
Object.defineProperty(exports, "isCI", { enumerable: true, get: function () { return utils_1.isCI; } });
|
|
31
|
+
Object.defineProperty(exports, "isLinux", { enumerable: true, get: function () { return utils_1.isLinux; } });
|
|
32
|
+
Object.defineProperty(exports, "isWindows", { enumerable: true, get: function () { return utils_1.isWindows; } });
|
|
33
|
+
Object.defineProperty(exports, "isMac", { enumerable: true, get: function () { return utils_1.isMac; } });
|
|
34
|
+
Object.defineProperty(exports, "sleep", { enumerable: true, get: function () { return utils_1.sleep; } });
|
|
35
|
+
var getCurrentTest_1 = require("./getCurrentTest");
|
|
36
|
+
Object.defineProperty(exports, "getServerUrl", { enumerable: true, get: function () { return getCurrentTest_1.getServerUrl; } });
|
|
37
|
+
var runCommandThatTerminates_1 = require("./runCommandThatTerminates");
|
|
38
|
+
Object.defineProperty(exports, "runCommandThatTerminates", { enumerable: true, get: function () { return runCommandThatTerminates_1.runCommandThatTerminates; } });
|
package/dist/run.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { run };
|
|
2
|
+
declare function run(cmd: string, { additionalTimeout, serverIsReadyMessage, serverIsReadyDelay, inspect, cwd, doNotFailOnWarning, serverUrl, isFlaky, }?: {
|
|
3
|
+
additionalTimeout?: number;
|
|
4
|
+
serverIsReadyMessage?: string | ((log: string) => boolean);
|
|
5
|
+
serverIsReadyDelay?: number;
|
|
6
|
+
inspect?: boolean;
|
|
7
|
+
/** deprecated */
|
|
8
|
+
cwd?: string;
|
|
9
|
+
doNotFailOnWarning?: boolean;
|
|
10
|
+
serverUrl?: string;
|
|
11
|
+
isFlaky?: boolean;
|
|
12
|
+
}): void;
|
package/dist/{setup.js → run.js}
RENAMED
|
@@ -1,35 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
7
|
-
var part_regex_1 = require("@brillout/part-regex");
|
|
8
|
-
Object.defineProperty(exports, "partRegex", { enumerable: true, get: function () { return part_regex_1.partRegex; } });
|
|
9
|
-
var autoRetry_1 = require("./autoRetry");
|
|
10
|
-
Object.defineProperty(exports, "autoRetry", { enumerable: true, get: function () { return autoRetry_1.autoRetry; } });
|
|
11
|
-
var Logs_1 = require("./Logs");
|
|
12
|
-
Object.defineProperty(exports, "expectError", { enumerable: true, get: function () { return Logs_1.expectError; } });
|
|
13
|
-
var runCommandThatTerminates_1 = require("./runCommandThatTerminates");
|
|
14
|
-
Object.defineProperty(exports, "runCommandThatTerminates", { enumerable: true, get: function () { return runCommandThatTerminates_1.runCommandThatTerminates; } });
|
|
3
|
+
exports.run = void 0;
|
|
15
4
|
const utils_1 = require("./utils");
|
|
16
|
-
Object.defineProperty(exports, "sleep", { enumerable: true, get: function () { return utils_1.sleep; } });
|
|
17
|
-
Object.defineProperty(exports, "isWindows", { enumerable: true, get: function () { return utils_1.isWindows; } });
|
|
18
|
-
Object.defineProperty(exports, "isLinux", { enumerable: true, get: function () { return utils_1.isLinux; } });
|
|
19
|
-
Object.defineProperty(exports, "isCI", { enumerable: true, get: function () { return utils_1.isCI; } });
|
|
20
|
-
Object.defineProperty(exports, "isMac", { enumerable: true, get: function () { return utils_1.isMac; } });
|
|
21
|
-
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
22
5
|
const utils_2 = require("./utils");
|
|
23
|
-
const
|
|
6
|
+
const Logs_1 = require("./Logs");
|
|
24
7
|
const editFile_1 = require("./editFile");
|
|
25
8
|
const getCurrentTest_1 = require("./getCurrentTest");
|
|
26
9
|
const page_1 = require("./page");
|
|
27
10
|
const TIMEOUTS_1 = require("./TIMEOUTS");
|
|
28
|
-
function skip(reason) {
|
|
29
|
-
const testInfo = (0, getCurrentTest_1.getCurrentTest)();
|
|
30
|
-
testInfo.skipped = { reason };
|
|
31
|
-
}
|
|
32
|
-
exports.skip = skip;
|
|
33
11
|
function run(cmd, {
|
|
34
12
|
//baseUrl = '',
|
|
35
13
|
additionalTimeout = 0, serverIsReadyMessage, serverIsReadyDelay = 1000, inspect = utils_1.cliConfig.inspect, cwd, doNotFailOnWarning, serverUrl, isFlaky, } = {}) {
|
|
@@ -43,7 +21,7 @@ additionalTimeout = 0, serverIsReadyMessage, serverIsReadyDelay = 1000, inspect
|
|
|
43
21
|
isFlaky,
|
|
44
22
|
});
|
|
45
23
|
if (inspect) {
|
|
46
|
-
|
|
24
|
+
Logs_1.Logs.logEagerly = true;
|
|
47
25
|
}
|
|
48
26
|
const testInfo = (0, getCurrentTest_1.getCurrentTest)();
|
|
49
27
|
let runProcess = null;
|
|
@@ -77,7 +55,7 @@ additionalTimeout = 0, serverIsReadyMessage, serverIsReadyDelay = 1000, inspect
|
|
|
77
55
|
}
|
|
78
56
|
};
|
|
79
57
|
testInfo.terminateServer = async () => {
|
|
80
|
-
|
|
58
|
+
Logs_1.Logs.add({
|
|
81
59
|
logSource: 'run()',
|
|
82
60
|
logText: 'Terminate server.',
|
|
83
61
|
});
|
|
@@ -92,7 +70,7 @@ additionalTimeout = 0, serverIsReadyMessage, serverIsReadyDelay = 1000, inspect
|
|
|
92
70
|
// Also called when the page throws an error or a warning
|
|
93
71
|
function onConsole(msg) {
|
|
94
72
|
const type = msg.type();
|
|
95
|
-
|
|
73
|
+
Logs_1.Logs.add({
|
|
96
74
|
logSource: (() => {
|
|
97
75
|
if (type === 'error') {
|
|
98
76
|
return 'Browser Error';
|
|
@@ -112,7 +90,7 @@ additionalTimeout = 0, serverIsReadyMessage, serverIsReadyDelay = 1000, inspect
|
|
|
112
90
|
}
|
|
113
91
|
// For uncaught exceptions
|
|
114
92
|
function onPageError(err) {
|
|
115
|
-
|
|
93
|
+
Logs_1.Logs.add({
|
|
116
94
|
logSource: 'Browser Error',
|
|
117
95
|
logText: JSON.stringify({
|
|
118
96
|
text: err.message,
|
|
@@ -136,7 +114,7 @@ async function startProcess({ serverIsReadyMessage, serverIsReadyDelay, addition
|
|
|
136
114
|
return serverIsReady;
|
|
137
115
|
};
|
|
138
116
|
}
|
|
139
|
-
|
|
117
|
+
Logs_1.Logs.add({
|
|
140
118
|
logSource: 'run()',
|
|
141
119
|
logText: `Spawn command \`${cmd}\``,
|
|
142
120
|
});
|
|
@@ -148,14 +126,14 @@ async function startProcess({ serverIsReadyMessage, serverIsReadyDelay, addition
|
|
|
148
126
|
isReadyTimeout: TIMEOUTS_1.TIMEOUT_NPM_SCRIPT + additionalTimeout,
|
|
149
127
|
killPort: process.env.CI || !(0, utils_1.isLinux)() ? false : getServerPort(),
|
|
150
128
|
onStderr(data, { loggedAfterExit }) {
|
|
151
|
-
|
|
129
|
+
Logs_1.Logs.add({
|
|
152
130
|
logSource: 'stderr',
|
|
153
131
|
logText: data,
|
|
154
132
|
loggedAfterExit,
|
|
155
133
|
});
|
|
156
134
|
},
|
|
157
135
|
onStdout(data, { loggedAfterExit }) {
|
|
158
|
-
|
|
136
|
+
Logs_1.Logs.add({
|
|
159
137
|
logSource: 'stdout',
|
|
160
138
|
logText: data,
|
|
161
139
|
loggedAfterExit,
|
|
@@ -163,20 +141,20 @@ async function startProcess({ serverIsReadyMessage, serverIsReadyDelay, addition
|
|
|
163
141
|
},
|
|
164
142
|
onExit(errMsg) {
|
|
165
143
|
if (!errMsg) {
|
|
166
|
-
|
|
144
|
+
Logs_1.Logs.add({
|
|
167
145
|
logSource: 'run()',
|
|
168
146
|
logText: `Process termination (expected)`,
|
|
169
147
|
});
|
|
170
148
|
}
|
|
171
149
|
else {
|
|
172
|
-
|
|
150
|
+
Logs_1.Logs.add({
|
|
173
151
|
logSource: 'run() failure',
|
|
174
152
|
logText: errMsg,
|
|
175
153
|
});
|
|
176
154
|
}
|
|
177
155
|
},
|
|
178
156
|
onTerminationError(errMsg) {
|
|
179
|
-
|
|
157
|
+
Logs_1.Logs.add({
|
|
180
158
|
logSource: 'run() failure',
|
|
181
159
|
logText: errMsg,
|
|
182
160
|
});
|
|
@@ -194,69 +172,15 @@ async function startProcess({ serverIsReadyMessage, serverIsReadyDelay, addition
|
|
|
194
172
|
done(!!err);
|
|
195
173
|
if (err)
|
|
196
174
|
throw err;
|
|
197
|
-
|
|
175
|
+
Logs_1.Logs.add({
|
|
198
176
|
logSource: 'run()',
|
|
199
177
|
logText: 'Server is ready.',
|
|
200
178
|
});
|
|
201
179
|
await (0, utils_1.sleep)(serverIsReadyDelay);
|
|
202
180
|
return { terminate };
|
|
203
181
|
}
|
|
204
|
-
async function fetchHtml(pathname) {
|
|
205
|
-
const response = await fetch(getServerUrl() + pathname);
|
|
206
|
-
const html = await response.text();
|
|
207
|
-
return html;
|
|
208
|
-
}
|
|
209
|
-
exports.fetchHtml = fetchHtml;
|
|
210
|
-
async function fetch(...args) {
|
|
211
|
-
try {
|
|
212
|
-
return await (0, node_fetch_1.default)(...args);
|
|
213
|
-
}
|
|
214
|
-
catch (err) {
|
|
215
|
-
Logs_2.Logs.add({
|
|
216
|
-
logSource: 'Connection Error',
|
|
217
|
-
logText: `Couldn't connect to \`${args[0]}\`. Args: \`${JSON.stringify(args.slice(1))}\`. Err: \`${
|
|
218
|
-
// @ts-ignore
|
|
219
|
-
err.message}\``,
|
|
220
|
-
});
|
|
221
|
-
throw new Error("Couldn't connect to server. See `Connection Error` log for more details.");
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
exports.fetch = fetch;
|
|
225
|
-
/*
|
|
226
|
-
async function bailOnTimeout(asyncFunc: () => Promise<void>, { timeout }: { timeout: number }) {
|
|
227
|
-
let resolve: () => void
|
|
228
|
-
let reject: (err: Error) => void
|
|
229
|
-
const promise = new Promise<void>((_resolve, _reject) => {
|
|
230
|
-
resolve = _resolve
|
|
231
|
-
reject = _reject
|
|
232
|
-
})
|
|
233
|
-
|
|
234
|
-
const t = setTimeout(() => {
|
|
235
|
-
reject(new Error(`Function timeout.`))
|
|
236
|
-
}, timeout)
|
|
237
|
-
await asyncFunc()
|
|
238
|
-
clearTimeout(t)
|
|
239
|
-
resolve()
|
|
240
|
-
|
|
241
|
-
return promise
|
|
242
|
-
}
|
|
243
|
-
*/
|
|
244
|
-
function isMinNodeVersion(minNodeVersion) {
|
|
245
|
-
const { version } = process;
|
|
246
|
-
(0, utils_2.assert)(version.startsWith('v'));
|
|
247
|
-
const major = parseInt(version[1] + version[2], 10);
|
|
248
|
-
(0, utils_2.assert)(12 <= major && major <= 50);
|
|
249
|
-
return major >= minNodeVersion;
|
|
250
|
-
}
|
|
251
|
-
exports.isMinNodeVersion = isMinNodeVersion;
|
|
252
|
-
function getServerUrl() {
|
|
253
|
-
const testInfo = (0, getCurrentTest_1.getCurrentTest)();
|
|
254
|
-
const serverUrl = testInfo.runInfo?.serverUrl;
|
|
255
|
-
return serverUrl;
|
|
256
|
-
}
|
|
257
|
-
exports.getServerUrl = getServerUrl;
|
|
258
182
|
function getServerPort() {
|
|
259
|
-
const serverUrl = getServerUrl();
|
|
183
|
+
const serverUrl = (0, getCurrentTest_1.getServerUrl)();
|
|
260
184
|
const portStr = serverUrl.split(':').slice(-1)[0].split('/')[0];
|
|
261
185
|
(0, utils_2.assert)(/\d+/.test(portStr), { serverUrl });
|
|
262
186
|
const port = parseInt(portStr, 10);
|
package/dist/runAll.js
CHANGED
|
@@ -76,17 +76,23 @@ async function buildAndTest(testFile, browser, isSecondAttempt) {
|
|
|
76
76
|
(0, logError_1.logError)(execErr);
|
|
77
77
|
return false;
|
|
78
78
|
}
|
|
79
|
-
// When user calls
|
|
80
|
-
|
|
81
|
-
|
|
79
|
+
// When user calls skip()
|
|
80
|
+
const testInfo = (0, getCurrentTest_1.getCurrentTest)();
|
|
81
|
+
if (testInfo.skipped) {
|
|
82
|
+
assertSkipUsage(testInfo);
|
|
83
|
+
(0, logTestStatus_1.logWarn)(testInfo.skipped.reason);
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
82
87
|
// Set when user calls run() or runCommandThatTerminates()
|
|
83
88
|
(0, utils_1.assert)(testInfo.runInfo);
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
89
|
+
}
|
|
90
|
+
// When user calls run runCommandThatTerminates()
|
|
91
|
+
if (testInfo.runInfo.isRunCommandThatTerminates) {
|
|
92
|
+
(0, utils_1.assertUsage)(!testInfo.tests, "Can't call test() when calling runCommandThatTerminates()");
|
|
93
|
+
(0, utils_1.assertUsage)(!testInfo.startServer, "Can't call run() when calling runCommandThatTerminates()");
|
|
94
|
+
(0, logTestStatus_1.logPass)();
|
|
95
|
+
return true;
|
|
90
96
|
}
|
|
91
97
|
const success = await runServerAndTests(browser, isSecondAttempt);
|
|
92
98
|
(0, getCurrentTest_2.setCurrentTest)(null);
|
|
@@ -94,12 +100,6 @@ async function buildAndTest(testFile, browser, isSecondAttempt) {
|
|
|
94
100
|
}
|
|
95
101
|
async function runServerAndTests(browser, isSecondAttempt) {
|
|
96
102
|
const testInfo = (0, getCurrentTest_1.getCurrentTest)();
|
|
97
|
-
// Set when user calls skip()
|
|
98
|
-
if (testInfo.skipped) {
|
|
99
|
-
assertSkipUsage(testInfo);
|
|
100
|
-
(0, logTestStatus_1.logWarn)(testInfo.skipped.reason);
|
|
101
|
-
return true;
|
|
102
|
-
}
|
|
103
103
|
// Set when user calls run()
|
|
104
104
|
(0, utils_1.assert)(testInfo.runInfo);
|
|
105
105
|
(0, utils_1.assert)(testInfo.startServer);
|
|
@@ -127,7 +127,7 @@ async function runServerAndTests(browser, isSecondAttempt) {
|
|
|
127
127
|
if (success) {
|
|
128
128
|
const failOnWarning = true;
|
|
129
129
|
if (Logs_1.Logs.hasFailLogs(failOnWarning) &&
|
|
130
|
-
// See comments about taskkill in src/
|
|
130
|
+
// See comments about taskkill in src/utils/runCommandLongRunning.ts
|
|
131
131
|
!(0, utils_1.isWindows)()) {
|
|
132
132
|
logFailure(null, `${getErrorType(failOnWarning)} occurred during server termination`, isFinalAttempt);
|
|
133
133
|
success = false;
|
package/dist/skip.d.ts
ADDED
package/dist/skip.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.skip = void 0;
|
|
4
|
+
const getCurrentTest_1 = require("./getCurrentTest");
|
|
5
|
+
function skip(reason) {
|
|
6
|
+
const testInfo = (0, getCurrentTest_1.getCurrentTest)();
|
|
7
|
+
testInfo.skipped = { reason };
|
|
8
|
+
}
|
|
9
|
+
exports.skip = skip;
|
package/dist/utils/index.d.ts
CHANGED
package/dist/utils/index.js
CHANGED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isMinNodeVersion = void 0;
|
|
4
|
+
const assert_1 = require("./assert");
|
|
5
|
+
function isMinNodeVersion(minNodeVersion) {
|
|
6
|
+
const { version } = process;
|
|
7
|
+
(0, assert_1.assert)(version.startsWith('v'));
|
|
8
|
+
const major = parseInt(version[1] + version[2], 10);
|
|
9
|
+
(0, assert_1.assert)(12 <= major && major <= 50);
|
|
10
|
+
return major >= minNodeVersion;
|
|
11
|
+
}
|
|
12
|
+
exports.isMinNodeVersion = isMinNodeVersion;
|
package/package.json
CHANGED
package/dist/setup.d.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
export { partRegex } from '@brillout/part-regex';
|
|
2
|
-
export { autoRetry } from './autoRetry';
|
|
3
|
-
export { fetchHtml };
|
|
4
|
-
export { fetch };
|
|
5
|
-
export { expectError } from './Logs';
|
|
6
|
-
export { run };
|
|
7
|
-
export { skip };
|
|
8
|
-
export { isMinNodeVersion };
|
|
9
|
-
export { isCI };
|
|
10
|
-
export { isLinux };
|
|
11
|
-
export { isWindows };
|
|
12
|
-
export { isMac };
|
|
13
|
-
export { sleep };
|
|
14
|
-
export { getServerUrl };
|
|
15
|
-
export { runCommandThatTerminates } from './runCommandThatTerminates';
|
|
16
|
-
import { sleep, isWindows, isLinux, isCI, isMac } from './utils';
|
|
17
|
-
import fetch_ from 'node-fetch';
|
|
18
|
-
declare function skip(reason: string): void;
|
|
19
|
-
declare function run(cmd: string, { additionalTimeout, serverIsReadyMessage, serverIsReadyDelay, inspect, cwd, doNotFailOnWarning, serverUrl, isFlaky, }?: {
|
|
20
|
-
additionalTimeout?: number;
|
|
21
|
-
serverIsReadyMessage?: string | ((log: string) => boolean);
|
|
22
|
-
serverIsReadyDelay?: number;
|
|
23
|
-
inspect?: boolean;
|
|
24
|
-
/** deprecated */
|
|
25
|
-
cwd?: string;
|
|
26
|
-
doNotFailOnWarning?: boolean;
|
|
27
|
-
serverUrl?: string;
|
|
28
|
-
isFlaky?: boolean;
|
|
29
|
-
}): void;
|
|
30
|
-
declare function fetchHtml(pathname: string): Promise<string>;
|
|
31
|
-
declare function fetch(...args: Parameters<typeof fetch_>): Promise<import("node-fetch").Response>;
|
|
32
|
-
declare function isMinNodeVersion(minNodeVersion: 14): boolean;
|
|
33
|
-
declare function getServerUrl(): string;
|