@brillout/test-e2e 0.6.8 → 0.6.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 +3 -1
- package/dist/Logs.js +2 -1
- package/dist/getCurrentTest.d.ts +1 -0
- package/dist/run.js +24 -5
- package/dist/runAll.js +10 -3
- package/package.json +1 -1
package/dist/Logs.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ type LogSource = 'stdout' | 'stderr' | 'Browser Error' | 'Browser Warning' | 'Br
|
|
|
12
12
|
type LogEntry = {
|
|
13
13
|
logSource: LogSource;
|
|
14
14
|
logText: string;
|
|
15
|
+
logInfo: string;
|
|
15
16
|
logTimestamp: string;
|
|
16
17
|
isNotFailure: boolean;
|
|
17
18
|
loggedAfterExit: boolean;
|
|
@@ -20,9 +21,10 @@ declare function hasFailLogs(failOnWarning: boolean): boolean;
|
|
|
20
21
|
declare function clearLogs(): void;
|
|
21
22
|
declare function logErrorsAndWarnings(): void;
|
|
22
23
|
declare function flushLogs(): void;
|
|
23
|
-
declare function add({ logSource, logText, loggedAfterExit, }: {
|
|
24
|
+
declare function add({ logSource, logText, logInfo, loggedAfterExit, }: {
|
|
24
25
|
logSource: LogSource;
|
|
25
26
|
logText: string;
|
|
27
|
+
logInfo?: string;
|
|
26
28
|
loggedAfterExit?: boolean;
|
|
27
29
|
}): void;
|
|
28
30
|
/**
|
package/dist/Logs.js
CHANGED
|
@@ -57,11 +57,12 @@ function flushLogs() {
|
|
|
57
57
|
logEntries.filter((logEntry) => !logEntry.loggedAfterExit).forEach((logEntry) => printLog(logEntry));
|
|
58
58
|
logEntries = [];
|
|
59
59
|
}
|
|
60
|
-
function add({ logSource, logText, loggedAfterExit = false, }) {
|
|
60
|
+
function add({ logSource, logText, logInfo = '', loggedAfterExit = false, }) {
|
|
61
61
|
const logTimestamp = getTimestamp();
|
|
62
62
|
const logEntry = {
|
|
63
63
|
logSource,
|
|
64
64
|
logText,
|
|
65
|
+
logInfo,
|
|
65
66
|
logTimestamp,
|
|
66
67
|
isNotFailure: isTolerateError({ logSource, logText }),
|
|
67
68
|
loggedAfterExit,
|
package/dist/getCurrentTest.d.ts
CHANGED
package/dist/run.js
CHANGED
|
@@ -69,11 +69,12 @@ additionalTimeout = 0, serverIsReadyMessage, serverIsReadyDelay = 1000, inspect
|
|
|
69
69
|
};
|
|
70
70
|
return;
|
|
71
71
|
// Also called when the page throws an error or a warning
|
|
72
|
-
function onConsole(msg) {
|
|
72
|
+
async function onConsole(msg) {
|
|
73
73
|
const type = msg.type();
|
|
74
|
+
const isError = type === 'error';
|
|
74
75
|
Logs.add({
|
|
75
76
|
logSource: (() => {
|
|
76
|
-
if (
|
|
77
|
+
if (isError) {
|
|
77
78
|
return 'Browser Error';
|
|
78
79
|
}
|
|
79
80
|
if (type === 'warning') {
|
|
@@ -81,16 +82,18 @@ additionalTimeout = 0, serverIsReadyMessage, serverIsReadyDelay = 1000, inspect
|
|
|
81
82
|
}
|
|
82
83
|
return 'Browser Log';
|
|
83
84
|
})(),
|
|
84
|
-
logText:
|
|
85
|
+
logText: msg.text(),
|
|
86
|
+
logInfo: JSON.stringify({
|
|
85
87
|
type,
|
|
86
|
-
text: msg.text(),
|
|
87
88
|
location: msg.location(),
|
|
88
89
|
args: msg.args(),
|
|
89
90
|
}, null, 2),
|
|
90
91
|
});
|
|
92
|
+
if (isError)
|
|
93
|
+
await terminateUponBrowserError();
|
|
91
94
|
}
|
|
92
95
|
// For uncaught exceptions
|
|
93
|
-
function onPageError(err) {
|
|
96
|
+
async function onPageError(err) {
|
|
94
97
|
Logs.add({
|
|
95
98
|
logSource: 'Browser Error',
|
|
96
99
|
logText: JSON.stringify({
|
|
@@ -98,6 +101,22 @@ additionalTimeout = 0, serverIsReadyMessage, serverIsReadyDelay = 1000, inspect
|
|
|
98
101
|
location: err.stack,
|
|
99
102
|
}, null, 2),
|
|
100
103
|
});
|
|
104
|
+
await terminateUponBrowserError();
|
|
105
|
+
}
|
|
106
|
+
async function terminateUponBrowserError() {
|
|
107
|
+
if (!cliOptions.bail)
|
|
108
|
+
return;
|
|
109
|
+
testInfo.aborted = true;
|
|
110
|
+
// Trick to abort the test: page.close() triggers the following error.
|
|
111
|
+
// ```console
|
|
112
|
+
// proxy.waitForFunction: Target closed
|
|
113
|
+
// at clientSideNavigation (.testRun.ts:16:16)
|
|
114
|
+
// at .testRun.ts:11:5
|
|
115
|
+
// at file:///home/rom/code/test-e2e/src/runAll.ts:278:7 {
|
|
116
|
+
// name: 'Error'
|
|
117
|
+
// }
|
|
118
|
+
// ```
|
|
119
|
+
await testInfo.page.close();
|
|
101
120
|
}
|
|
102
121
|
}
|
|
103
122
|
async function startProcess({ serverIsReadyMessage, serverIsReadyDelay, additionalTimeout, cmd, }) {
|
package/dist/runAll.js
CHANGED
|
@@ -11,11 +11,15 @@ import { loadConfig } from './getConfig.js';
|
|
|
11
11
|
import { logError } from './logError.js';
|
|
12
12
|
import { hasFail, logBoot, logFail, logPass, logWarn, TEST_FAIL } from './logTestStatus.js';
|
|
13
13
|
import pc from '@brillout/picocolors';
|
|
14
|
+
let browser;
|
|
14
15
|
async function runAll(filter) {
|
|
15
16
|
await loadConfig();
|
|
16
17
|
const testFiles = await findTestFiles(filter);
|
|
17
|
-
|
|
18
|
+
browser = await getBrowser();
|
|
18
19
|
const failedTestFiles = await runTestFiles(testFiles, browser);
|
|
20
|
+
await closeAll(failedTestFiles);
|
|
21
|
+
}
|
|
22
|
+
async function closeAll(failedTestFiles) {
|
|
19
23
|
await browser.close();
|
|
20
24
|
const hasFailedTestFile = failedTestFiles.length > 0;
|
|
21
25
|
const hasFailLog = hasFail();
|
|
@@ -134,8 +138,11 @@ async function runServerAndTests(browser, isThirdAttempt, isFlaky) {
|
|
|
134
138
|
return false;
|
|
135
139
|
}
|
|
136
140
|
let success = await runTests(testInfo, isFinalAttempt);
|
|
141
|
+
return await closeTest(testInfo, success, isFinalAttempt);
|
|
142
|
+
}
|
|
143
|
+
async function closeTest(testInfo, success, isFinalAttempt) {
|
|
137
144
|
await testInfo.terminateServer();
|
|
138
|
-
await page.close();
|
|
145
|
+
await testInfo.page.close();
|
|
139
146
|
// Check whether stderr emitted during testInfo.terminateServer()
|
|
140
147
|
if (success) {
|
|
141
148
|
const failOnWarning = true;
|
|
@@ -181,7 +188,7 @@ async function runTests(testInfo, isFinalAttempt) {
|
|
|
181
188
|
const hasErrorLog = Logs.hasFailLogs(failOnWarning);
|
|
182
189
|
const isFailure = err || hasErrorLog;
|
|
183
190
|
if (isFailure) {
|
|
184
|
-
if (err) {
|
|
191
|
+
if (err && !testInfo.aborted) {
|
|
185
192
|
logFailure(err, `the test "${testDesc}" threw an error`, isFinalAttempt);
|
|
186
193
|
}
|
|
187
194
|
else if (hasErrorLog) {
|