@brillout/test-e2e 0.3.11 → 0.4.0

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.js CHANGED
@@ -16,6 +16,7 @@ const utils_1 = require("./utils");
16
16
  const picocolors_1 = __importDefault(require("picocolors"));
17
17
  const getCurrentTest_1 = require("./getCurrentTest");
18
18
  const getConfig_1 = require("./getConfig");
19
+ const logSection_1 = require("./logSection");
19
20
  let logEntries = [];
20
21
  function hasErrorLogs(failOnWarning) {
21
22
  const errorLogs = getErrorLogs(failOnWarning);
@@ -43,11 +44,14 @@ function clearLogs() {
43
44
  logEntries = [];
44
45
  }
45
46
  function logErrors(failOnWarning) {
47
+ if (!exports.Logs.hasErrorLogs(failOnWarning))
48
+ return;
49
+ (0, logSection_1.logSection)(`ERROR${!failOnWarning ? '' : '/WARNING'} LOG(S)`);
46
50
  const errorLogs = getErrorLogs(failOnWarning);
47
51
  errorLogs.forEach((logEntry) => printLog(logEntry));
48
52
  }
49
53
  function flushLogs() {
50
- console.log(picocolors_1.default.bold('vvvv ALL LOGS vvvv'));
54
+ (0, logSection_1.logSection)('ALL LOGS');
51
55
  logEntries.forEach((logEntry) => printLog(logEntry));
52
56
  logEntries = [];
53
57
  }
@@ -105,6 +109,8 @@ function printLog(logEntry) {
105
109
  // I don't know why but sometimes `logText` is `undefined`
106
110
  if (msg === undefined)
107
111
  msg = '';
112
+ // Some logs seem have a trailing new line
113
+ msg = msg.trim();
108
114
  let testInfoLabels = '';
109
115
  if (testInfo) {
110
116
  (0, utils_1.assert)(testInfo.runInfo);
package/dist/cli.js CHANGED
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const source_map_support_1 = __importDefault(require("source-map-support"));
7
7
  const utils_1 = require("./utils");
8
- const runTestSuites_1 = require("./runTestSuites");
8
+ const runTests_1 = require("./runTests");
9
9
  const buildTs_1 = require("./buildTs");
10
10
  const Logs_1 = require("./Logs");
11
11
  initSourceMap();
@@ -14,7 +14,7 @@ initUserExitHandler();
14
14
  cli();
15
15
  function cli() {
16
16
  const filter = (0, utils_1.findFilesParseCliArgs)();
17
- (0, runTestSuites_1.runTestSuites)(filter);
17
+ (0, runTests_1.runTests)(filter);
18
18
  }
19
19
  function initPromiseRejectionHandler() {
20
20
  process.on('unhandledRejection', function (err) {
@@ -1,24 +1,17 @@
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
3
  exports.findTestFiles = void 0;
7
- const path_1 = __importDefault(require("path"));
8
4
  const utils_1 = require("./utils");
9
- const fs_1 = __importDefault(require("fs"));
10
- const cwd = process.cwd();
11
- // Unit tests `**/*.spec.*` are handled by Vitesse
5
+ const github_action_1 = require("./github-action");
6
+ // Unit tests `**/*.spec.*` are handled by Vitest
12
7
  const testFilenamePattern = '**/*.test.ts';
13
8
  async function findTestFiles(findFilter) {
14
- if (process.env.TEST_FILES) {
15
- const testFiles = process.env.TEST_FILES.split(' ').map((filePathRelative) => path_1.default.join(cwd, filePathRelative));
16
- testFiles.forEach((testFile) => {
17
- (0, utils_1.assert)(fs_1.default.existsSync(testFile), testFile);
18
- });
19
- return testFiles;
9
+ {
10
+ const testFiles = (0, github_action_1.getTestFiles)();
11
+ if (testFiles)
12
+ return testFiles;
20
13
  }
21
- else {
14
+ {
22
15
  const testFiles = (0, utils_1.findFiles)(testFilenamePattern, findFilter);
23
16
  return testFiles;
24
17
  }
@@ -0,0 +1,4 @@
1
+ export { abortIfGitHubAction };
2
+ export { getTestFiles };
3
+ declare function abortIfGitHubAction(): void;
4
+ declare function getTestFiles(): null | string[];
@@ -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.getTestFiles = exports.abortIfGitHubAction = void 0;
7
+ const utils_1 = require("./utils");
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const cwd = process.cwd();
11
+ function abortIfGitHubAction() {
12
+ if (isGitHubAction()) {
13
+ process.exit(1);
14
+ }
15
+ }
16
+ exports.abortIfGitHubAction = abortIfGitHubAction;
17
+ function isGitHubAction() {
18
+ return getTestFiles() !== null;
19
+ }
20
+ function getTestFiles() {
21
+ if (!('TEST_FILES' in process.env))
22
+ return null;
23
+ (0, utils_1.assert)(process.env.TEST_FILES);
24
+ const testFiles = process.env.TEST_FILES.split(' ').map((filePathRelative) => path_1.default.join(cwd, filePathRelative));
25
+ testFiles.forEach((testFile) => {
26
+ (0, utils_1.assert)(fs_1.default.existsSync(testFile), testFile);
27
+ });
28
+ return testFiles;
29
+ }
30
+ exports.getTestFiles = getTestFiles;
@@ -0,0 +1,2 @@
1
+ export { logSection };
2
+ declare function logSection(sectionTitle: string): void;
@@ -0,0 +1,11 @@
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.logSection = void 0;
7
+ const picocolors_1 = __importDefault(require("picocolors"));
8
+ function logSection(sectionTitle) {
9
+ console.log(picocolors_1.default.bold(`vvvvvv ${sectionTitle} vvvvvv`));
10
+ }
11
+ exports.logSection = logSection;
@@ -1,3 +1,3 @@
1
1
  export { runTests };
2
- import type { Browser } from 'playwright-chromium';
3
- declare function runTests(browser: Browser): Promise<void>;
2
+ import { type FindFilter } from './utils';
3
+ declare function runTests(filter: null | FindFilter): Promise<void>;
package/dist/runTests.js CHANGED
@@ -7,8 +7,38 @@ exports.runTests = void 0;
7
7
  const getCurrentTest_1 = require("./getCurrentTest");
8
8
  const Logs_1 = require("./Logs");
9
9
  const utils_1 = require("./utils");
10
+ const utils_2 = require("./utils");
10
11
  const picocolors_1 = __importDefault(require("picocolors"));
11
- async function runTests(browser) {
12
+ const github_action_1 = require("./github-action");
13
+ const logSection_1 = require("./logSection");
14
+ const getCurrentTest_2 = require("./getCurrentTest");
15
+ const getBrowser_1 = require("./getBrowser");
16
+ const buildTs_1 = require("./buildTs");
17
+ const findTestFiles_1 = require("./findTestFiles");
18
+ const getConfig_1 = require("./getConfig");
19
+ async function runTests(filter) {
20
+ await (0, getConfig_1.loadConfig)();
21
+ const testFiles = await (0, findTestFiles_1.findTestFiles)(filter);
22
+ const browser = await (0, getBrowser_1.getBrowser)();
23
+ for (const testFile of testFiles) {
24
+ (0, utils_1.assert)(testFile.endsWith('.ts'));
25
+ const testFileJs = testFile.replace('.ts', '.mjs');
26
+ const clean = await (0, buildTs_1.buildTs)(testFile, testFileJs);
27
+ (0, getCurrentTest_2.setCurrentTest)(testFile);
28
+ try {
29
+ await import((0, utils_2.fsWindowsBugWorkaround)(testFileJs));
30
+ }
31
+ finally {
32
+ clean();
33
+ }
34
+ await runTestFile(browser);
35
+ (0, getCurrentTest_2.setCurrentTest)(null);
36
+ (0, utils_1.assert)(testFileJs.endsWith('.mjs'));
37
+ }
38
+ await browser.close();
39
+ }
40
+ exports.runTests = runTests;
41
+ async function runTestFile(browser) {
12
42
  const testInfo = (0, getCurrentTest_1.getCurrentTest)();
13
43
  if (utils_1.isTTY) {
14
44
  console.log();
@@ -18,7 +48,7 @@ async function runTests(browser) {
18
48
  testInfo.page = page;
19
49
  // Set when user calls `skip()`
20
50
  if (testInfo.skipped) {
21
- logTestsResult(false);
51
+ logResult(false);
22
52
  (0, utils_1.assertUsage)(!testInfo.runInfo, 'You cannot call `run()` after calling `skip()`');
23
53
  (0, utils_1.assertUsage)(testInfo.tests === undefined, 'You cannot call `test()` after calling `skip()`');
24
54
  return;
@@ -30,15 +60,25 @@ async function runTests(browser) {
30
60
  (0, utils_1.assert)(testInfo.afterEach);
31
61
  // Set when user calls `test()`
32
62
  (0, utils_1.assert)(testInfo.tests);
63
+ const clean = async () => {
64
+ await testInfo.terminateServer?.();
65
+ await page.close();
66
+ };
67
+ const abort = async () => {
68
+ await clean();
69
+ (0, github_action_1.abortIfGitHubAction)();
70
+ };
33
71
  // TODO: resolve a success flag instead rejecting
34
72
  try {
35
73
  await testInfo.startServer();
36
74
  }
37
75
  catch (err) {
38
- logTestsResult(false);
39
- console.log(err);
76
+ logResult(false);
77
+ logFailureReason('during server start', false);
78
+ logError(err);
40
79
  Logs_1.Logs.flushLogs();
41
- process.exit(1);
80
+ await abort();
81
+ return;
42
82
  }
43
83
  for (const { testDesc, testFn } of testInfo.tests) {
44
84
  Logs_1.Logs.add({
@@ -55,41 +95,49 @@ async function runTests(browser) {
55
95
  }
56
96
  done(!!err);
57
97
  testInfo.afterEach(!!err);
58
- const { doNotFailOnWarning } = testInfo.runInfo;
59
- const hasErrorLog = Logs_1.Logs.hasErrorLogs(!doNotFailOnWarning);
60
- const isFailure = err || hasErrorLog;
61
- if (isFailure) {
62
- logTestsResult(false);
63
- if (err) {
64
- console.log(err);
65
- }
66
- else if (hasErrorLog) {
67
- logIsFailure(false, !doNotFailOnWarning);
98
+ {
99
+ const failOnWarning = !testInfo.runInfo.doNotFailOnWarning;
100
+ const hasErrorLog = Logs_1.Logs.hasErrorLogs(failOnWarning);
101
+ const isFailure = err || hasErrorLog;
102
+ if (isFailure) {
103
+ logResult(false);
104
+ const failureContext = 'while running the tests';
105
+ if (err) {
106
+ logFailureReason(failureContext, false);
107
+ logError(err);
108
+ }
109
+ else if (hasErrorLog) {
110
+ logFailureReason(failureContext, true, failOnWarning);
111
+ }
112
+ else {
113
+ (0, utils_1.assert)(false);
114
+ }
115
+ Logs_1.Logs.logErrors(failOnWarning);
116
+ Logs_1.Logs.flushLogs();
117
+ await abort();
118
+ return;
68
119
  }
69
- Logs_1.Logs.flushLogs();
70
- process.exit(1);
71
- }
72
- else {
73
- Logs_1.Logs.clearLogs();
74
120
  }
121
+ Logs_1.Logs.clearLogs();
75
122
  }
76
- await testInfo.terminateServer();
77
- await page.close();
78
- // Handle case that an error occured during `terminateServer()`
123
+ await clean();
124
+ // Handle case that an error occured during `testInfo.terminateServer()`
79
125
  if (Logs_1.Logs.hasErrorLogs(true)) {
80
- if ((0, utils_1.isWindows)()) {
81
- // On Windows, the sever sometimes terminates with an exit code of `1`. I don't know why.
82
- Logs_1.Logs.clearLogs();
83
- }
84
- else {
85
- logIsFailure(true, false);
86
- Logs_1.Logs.flushLogs();
87
- process.exit(1);
88
- }
126
+ /* TODO: implement more precise workaround
127
+ if (isWindows()) {
128
+ // On Windows, the sever sometimes terminates with an exit code of `1`. I don't know why.
129
+ Logs.clearLogs()
130
+ } else {
131
+ */
132
+ const failOnWarning = false;
133
+ logFailureReason('during server termination', true, failOnWarning);
134
+ Logs_1.Logs.logErrors(failOnWarning);
135
+ Logs_1.Logs.flushLogs();
136
+ await abort();
137
+ return;
89
138
  }
90
- logTestsResult(true);
139
+ logResult(true);
91
140
  }
92
- exports.runTests = runTests;
93
141
  function runTest(testFn, testFunctionTimeout) {
94
142
  let resolve;
95
143
  let reject;
@@ -115,30 +163,37 @@ function runTest(testFn, testFunctionTimeout) {
115
163
  })();
116
164
  return promise;
117
165
  }
118
- function logTestsResult(success) {
166
+ function logResult(success) {
119
167
  const testInfo = (0, getCurrentTest_1.getCurrentTest)();
120
- const passStyle = (t) => picocolors_1.default.bold(picocolors_1.default.bgGreen(t));
121
- const failStyle = (t) => picocolors_1.default.bold(picocolors_1.default.bgRed(t));
122
- const skipStyle = (t) => picocolors_1.default.bold(picocolors_1.default.bgYellow(t));
168
+ const { PASS, FAIL, WARN } = getStatusTags();
123
169
  if (success) {
124
170
  (0, utils_1.assert)(!testInfo.skipped);
125
- console.log(`${passStyle(' PASS ')} ${testInfo.testFile}`);
171
+ console.log(`${PASS} ${testInfo.testFile}`);
126
172
  return;
127
173
  }
128
174
  if (testInfo.skipped) {
129
- console.log(`${skipStyle(' WARN ')} ${testInfo.testFile} (${testInfo.skipped})`);
175
+ console.log(`${WARN} ${testInfo.testFile} (${testInfo.skipped})`);
130
176
  }
131
177
  else {
132
- console.log(`${failStyle(' FAIL ')} ${testInfo.testFile}`);
178
+ console.log(`${FAIL} ${testInfo.testFile}`);
133
179
  }
134
180
  }
135
- function logIsFailure(isTermination, failOnWarning) {
136
- console.log(picocolors_1.default.red(picocolors_1.default.bold([
137
- 'Test FAIL because encountered an error',
138
- !failOnWarning ? '' : ' or warning',
139
- !isTermination ? '' : ' during termination',
140
- ', see logs below.',
141
- ].join(''))));
142
- console.log(picocolors_1.default.bold('vvvv FAIL LOG vvvv'));
143
- Logs_1.Logs.logErrors(failOnWarning);
181
+ function logFailureReason(context, isErrorLog, failOnWarning) {
182
+ const { FAIL } = getStatusTags();
183
+ const color = (s) => picocolors_1.default.red(picocolors_1.default.bold(s));
184
+ (0, utils_1.assert)((isErrorLog === false && failOnWarning === undefined) ||
185
+ (isErrorLog === true && (failOnWarning === true || failOnWarning === false)));
186
+ const errType = isErrorLog ? 'error' : !failOnWarning ? 'error(s)' : 'error(s)/warning(s)';
187
+ const msg = `Test ${FAIL} because encountered ${errType} ${context}, see below.`;
188
+ console.log(color(msg));
189
+ }
190
+ function logError(err) {
191
+ (0, logSection_1.logSection)('ERROR');
192
+ console.log(err);
193
+ }
194
+ function getStatusTags() {
195
+ const PASS = picocolors_1.default.bold(picocolors_1.default.bgGreen('PASS'));
196
+ const FAIL = picocolors_1.default.bold(picocolors_1.default.bgRed('FAIL'));
197
+ const WARN = picocolors_1.default.bold(picocolors_1.default.bgYellow('WARN'));
198
+ return { PASS, FAIL, WARN };
144
199
  }
package/dist/setup.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { sleep, isWindows, isLinux, isGithubAction, isMac } from './utils';
1
+ import { sleep, isWindows, isLinux, isCI, isMac } from './utils';
2
2
  import fetch_ from 'node-fetch';
3
3
  export { partRegex } from '@brillout/part-regex';
4
4
  export { autoRetry };
@@ -8,7 +8,7 @@ export { expectError } from './Logs';
8
8
  export { run };
9
9
  export { skip };
10
10
  export { isMinNodeVersion };
11
- export { isGithubAction };
11
+ export { isCI };
12
12
  export { isLinux };
13
13
  export { isWindows };
14
14
  export { isMac };
package/dist/setup.js CHANGED
@@ -3,14 +3,14 @@ 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.getServerUrl = exports.sleep = exports.isMac = exports.isWindows = exports.isLinux = exports.isGithubAction = exports.isMinNodeVersion = exports.skip = exports.run = exports.expectError = exports.fetch = exports.fetchHtml = exports.autoRetry = exports.partRegex = void 0;
6
+ exports.getServerUrl = exports.sleep = exports.isMac = exports.isWindows = exports.isLinux = exports.isCI = exports.isMinNodeVersion = exports.skip = exports.run = exports.expectError = exports.fetch = exports.fetchHtml = exports.autoRetry = exports.partRegex = void 0;
7
7
  const child_process_1 = require("child_process");
8
8
  const path_1 = require("path");
9
9
  const utils_1 = require("./utils");
10
10
  Object.defineProperty(exports, "sleep", { enumerable: true, get: function () { return utils_1.sleep; } });
11
11
  Object.defineProperty(exports, "isWindows", { enumerable: true, get: function () { return utils_1.isWindows; } });
12
12
  Object.defineProperty(exports, "isLinux", { enumerable: true, get: function () { return utils_1.isLinux; } });
13
- Object.defineProperty(exports, "isGithubAction", { enumerable: true, get: function () { return utils_1.isGithubAction; } });
13
+ Object.defineProperty(exports, "isCI", { enumerable: true, get: function () { return utils_1.isCI; } });
14
14
  Object.defineProperty(exports, "isMac", { enumerable: true, get: function () { return utils_1.isMac; } });
15
15
  const node_fetch_1 = __importDefault(require("node-fetch"));
16
16
  const utils_2 = require("./utils");
@@ -24,9 +24,9 @@ Object.defineProperty(exports, "partRegex", { enumerable: true, get: function ()
24
24
  var Logs_2 = require("./Logs");
25
25
  Object.defineProperty(exports, "expectError", { enumerable: true, get: function () { return Logs_2.expectError; } });
26
26
  const serverUrlDefault = 'http://localhost:3000';
27
- const TIMEOUT_NPM_SCRIPT = 2 * 60 * 1000 * (!(0, utils_1.isGithubAction)() ? 1 : (0, utils_1.isWindows)() ? 2 : 1);
28
- const TIMEOUT_TEST_FUNCTION = 60 * 1000 * (!(0, utils_1.isGithubAction)() ? 1 : (0, utils_1.isWindows)() ? 5 : 3);
29
- const TIMEOUT_PROCESS_TERMINATION = 10 * 1000 * (!(0, utils_1.isGithubAction)() ? 1 : (0, utils_1.isLinux)() ? 1 : 4);
27
+ const TIMEOUT_NPM_SCRIPT = 2 * 60 * 1000 * (!(0, utils_1.isCI)() ? 1 : (0, utils_1.isWindows)() ? 2 : 1);
28
+ const TIMEOUT_TEST_FUNCTION = 60 * 1000 * (!(0, utils_1.isCI)() ? 1 : (0, utils_1.isWindows)() ? 5 : 3);
29
+ const TIMEOUT_PROCESS_TERMINATION = 10 * 1000 * (!(0, utils_1.isCI)() ? 1 : (0, utils_1.isLinux)() ? 1 : 4);
30
30
  const TIMEOUT_AUTORETRY = TIMEOUT_TEST_FUNCTION / 2;
31
31
  const TIMEOUT_PLAYWRIGHT = TIMEOUT_TEST_FUNCTION / 2;
32
32
  function skip(reason) {
@@ -1,8 +1,8 @@
1
- export { isGithubAction };
1
+ export { isCI };
2
2
  export { isLinux };
3
3
  export { isWindows };
4
4
  export { isMac };
5
5
  declare function isWindows(): boolean;
6
6
  declare function isLinux(): boolean;
7
7
  declare function isMac(): boolean;
8
- declare function isGithubAction(): boolean;
8
+ declare function isCI(): boolean;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isMac = exports.isWindows = exports.isLinux = exports.isGithubAction = void 0;
3
+ exports.isMac = exports.isWindows = exports.isLinux = exports.isCI = void 0;
4
4
  const assert_1 = require("./assert");
5
5
  function isWindows() {
6
6
  return process.platform === 'win32';
@@ -18,7 +18,7 @@ function isMac() {
18
18
  return false;
19
19
  }
20
20
  exports.isMac = isMac;
21
- function isGithubAction() {
21
+ function isCI() {
22
22
  return !!process.env.CI;
23
23
  }
24
- exports.isGithubAction = isGithubAction;
24
+ exports.isCI = isCI;
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.runCommand = void 0;
4
4
  const child_process_1 = require("child_process");
5
5
  function runCommand(cmd, { swallowError = false, timeout = 5000, cwd = process.cwd(), } = {}) {
6
- const { promise, resolvePromise } = genPromise();
6
+ const { promise, resolvePromise, rejectPromise } = genPromise();
7
7
  const t = setTimeout(() => {
8
8
  console.error(`Command call \`${cmd}\` timeout [${timeout / 1000} seconds][${cwd}].`);
9
- process.exit(1);
9
+ rejectPromise();
10
10
  }, timeout);
11
11
  const options = { cwd };
12
12
  (0, child_process_1.exec)(cmd, options, (err, stdout, stderr) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brillout/test-e2e",
3
- "version": "0.3.11",
3
+ "version": "0.4.0",
4
4
  "bin": "./bin.js",
5
5
  "main": "./dist/index.js",
6
6
  "scripts": {
@@ -1,3 +0,0 @@
1
- export { runTestSuites };
2
- import { FindFilter } from './utils';
3
- declare function runTestSuites(filter: null | FindFilter): Promise<void>;
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runTestSuites = void 0;
4
- const utils_1 = require("./utils");
5
- const getCurrentTest_1 = require("./getCurrentTest");
6
- const runTests_1 = require("./runTests");
7
- const getBrowser_1 = require("./getBrowser");
8
- const buildTs_1 = require("./buildTs");
9
- const findTestFiles_1 = require("./findTestFiles");
10
- const getConfig_1 = require("./getConfig");
11
- async function runTestSuites(filter) {
12
- await (0, getConfig_1.loadConfig)();
13
- const testFiles = await (0, findTestFiles_1.findTestFiles)(filter);
14
- const browser = await (0, getBrowser_1.getBrowser)();
15
- for (const testFile of testFiles) {
16
- (0, utils_1.assert)(testFile.endsWith('.ts'));
17
- const testFileJs = testFile.replace('.ts', '.mjs');
18
- const clean = await (0, buildTs_1.buildTs)(testFile, testFileJs);
19
- (0, getCurrentTest_1.setCurrentTest)(testFile);
20
- try {
21
- await import((0, utils_1.fsWindowsBugWorkaround)(testFileJs));
22
- }
23
- finally {
24
- clean();
25
- }
26
- await (0, runTests_1.runTests)(browser);
27
- (0, getCurrentTest_1.setCurrentTest)(null);
28
- (0, utils_1.assert)(testFileJs.endsWith('.mjs'));
29
- }
30
- await browser.close();
31
- }
32
- exports.runTestSuites = runTestSuites;