server4test 1.0.2 → 2.0.0-rc.1

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/README.md CHANGED
@@ -169,6 +169,14 @@ through [webpack-dev-middleware](https://www.npmjs.com/package/webpack-dev-middl
169
169
  (by default under `/dist`).
170
170
 
171
171
 
172
+ Since version 2.0 `webpack` and `webpack-dev-middleware` are optional dependencies
173
+ (`peerDependencies`), so to use `webpack.config.js` they must be installed in the project:
174
+
175
+
176
+ ```sh
177
+ npm install --save-dev webpack webpack-dev-middleware
178
+ ```
179
+
172
180
  # local-file-repo
173
181
 
174
182
 
@@ -191,6 +199,77 @@ store is flat and cannot escape the directory. A random delay of up to
191
199
  asynchrony visible while testing.
192
200
 
193
201
 
202
+ # browser-test
203
+
204
+
205
+ Runs the [mocha](https://mochajs.org/) tests in real browsers (Chrome and Firefox)
206
+ in headless mode and without drivers: _server4test_ generates a page that loads mocha
207
+ and the listed files, launches the browser pointing to that page and waits for the page
208
+ to send the result with a POST.
209
+
210
+ It is configured with the list of files to load, in order (mocha is loaded automatically,
211
+ from `node_modules/mocha`). The `.css` files are loaded as stylesheets and the rest as scripts:
212
+
213
+
214
+ ```yaml
215
+ server4test:
216
+ browser-test:
217
+ files:
218
+ - my-lib.css
219
+ - node_modules/require-bro/lib/require-bro.js
220
+ - node_modules/expect.js/index.js
221
+ - my-lib.js
222
+ - test/test.js
223
+ timeout: 120000 # ms waiting for the results of each browser (default 120000)
224
+ coverage-dir: .nyc_output # where the coverage is saved (default .nyc_output)
225
+ ```
226
+
227
+
228
+ To run them and exit (with exit code 0 if all is ok and 1 otherwise):
229
+
230
+
231
+ ```sh
232
+ server4test --run-browser chrome,firefox
233
+ ```
234
+
235
+
236
+ Each browser runs separately, with a temporary profile, and the server uses a free port.
237
+ The `console` output of the page, the errors and the failed tests are shown. The run
238
+ fails if any test fails, if there are errors loading or running the files, if no test
239
+ was run, if the `timeout` expires or if the browser exits before sending the result.
240
+
241
+ The browser is searched in the environment variables `CHROME_BIN` and `FIREFOX_BIN` and,
242
+ if they are not set, in the usual places of each operating system. The `ubuntu` runners
243
+ of GitHub Actions already have Chrome and Firefox installed.
244
+
245
+ Running `server4test` without `--run-browser` the page is available at
246
+ `/server4test-browser-test` to open it manually in any browser; the result is shown in
247
+ the server console.
248
+
249
+ An image (or another resource that is not a file of the list) that can not be loaded is
250
+ shown as a warning, it does not make the run fail.
251
+
252
+
253
+ ## coverage
254
+
255
+
256
+ If the files are instrumented by istanbul (i.e. with `nyc instrument`), the page sends
257
+ `window.__coverage__` together with the result and _server4test_ saves it in
258
+ `coverage-dir` as `server4test-<browser>.json`; then `nyc report` builds the report
259
+ (merging the browsers):
260
+
261
+
262
+ ```sh
263
+ nyc instrument --delete lib local-instrumented/lib
264
+ server4test --run-browser chrome,firefox
265
+ nyc report --reporter=text --reporter=lcov
266
+ ```
267
+
268
+
269
+ In that case the list of files must load the instrumented version
270
+ (`local-instrumented/lib/my-lib.js` in the example).
271
+
272
+
194
273
  # using it as a library
195
274
 
196
275
 
@@ -215,3 +294,4 @@ launch({serverClass:ExampleServer, server4test:{port:3339, verbose:true}})
215
294
 
216
295
  Each service is `{path, method?}` plus either `html` (served as html) or
217
296
  `middleware` (an express middleware). The default `method` is `use`.
297
+
@@ -0,0 +1,41 @@
1
+ import type { Server4Test, Server4TestOpts } from './server4test';
2
+ export declare const BROWSER_TEST_PAGE_PATH = "/server4test-browser-test";
3
+ export declare const BROWSER_TEST_RESULT_PATH = "/server4test-browser-result";
4
+ export declare const BROWSER_TEST_TIMEOUT_DEFAULT = 120000;
5
+ export declare const BROWSER_TEST_COVERAGE_DIR_DEFAULT = ".nyc_output";
6
+ export type BrowserTestOpts = {
7
+ files: string[];
8
+ timeout?: number;
9
+ "coverage-dir"?: string;
10
+ };
11
+ export type BrowserTestFailure = {
12
+ title: string;
13
+ message: string;
14
+ stack?: string;
15
+ };
16
+ export type BrowserTestReport = {
17
+ userAgent: string;
18
+ console: {
19
+ level: string;
20
+ text: string;
21
+ }[];
22
+ loadErrors: string[];
23
+ errors: string[];
24
+ finished: boolean;
25
+ tests: number;
26
+ passes: number;
27
+ pending: number;
28
+ failures: BrowserTestFailure[];
29
+ /** window.__coverage__ when the files are instrumented by istanbul (i.e. nyc instrument) */
30
+ coverage?: Record<string, unknown>;
31
+ };
32
+ export type BrowserName = 'chrome' | 'firefox';
33
+ export declare function isBrowserName(name: string): name is BrowserName;
34
+ export declare function browserTestPage(baseUrl: string, browserTest: BrowserTestOpts): string;
35
+ export declare function parseBrowserTestReport(body: unknown): BrowserTestReport;
36
+ /** saves the coverage (if any) in the coverage-dir (default .nyc_output) to be used by nyc report */
37
+ export declare function saveBrowserTestCoverage(report: BrowserTestReport, label: string, browserTest: BrowserTestOpts): Promise<void>;
38
+ /** prints the report and returns true if all is ok */
39
+ export declare function printBrowserTestReport(report: BrowserTestReport, label: string): boolean;
40
+ /** runs the browser test in each browser (comma separated list), returns true if all is ok */
41
+ export declare function runBrowsers(ServerConstructor: typeof Server4Test, opts: Server4TestOpts, browserList: string | undefined): Promise<boolean>;
@@ -0,0 +1,321 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BROWSER_TEST_COVERAGE_DIR_DEFAULT = exports.BROWSER_TEST_TIMEOUT_DEFAULT = exports.BROWSER_TEST_RESULT_PATH = exports.BROWSER_TEST_PAGE_PATH = void 0;
4
+ exports.isBrowserName = isBrowserName;
5
+ exports.browserTestPage = browserTestPage;
6
+ exports.parseBrowserTestReport = parseBrowserTestReport;
7
+ exports.saveBrowserTestCoverage = saveBrowserTestCoverage;
8
+ exports.printBrowserTestReport = printBrowserTestReport;
9
+ exports.runBrowsers = runBrowsers;
10
+ const child_process_1 = require("child_process");
11
+ const fs_1 = require("fs");
12
+ const os = require("os");
13
+ const Path = require("path");
14
+ exports.BROWSER_TEST_PAGE_PATH = '/server4test-browser-test';
15
+ exports.BROWSER_TEST_RESULT_PATH = '/server4test-browser-result';
16
+ exports.BROWSER_TEST_TIMEOUT_DEFAULT = 120000;
17
+ exports.BROWSER_TEST_COVERAGE_DIR_DEFAULT = '.nyc_output';
18
+ function inProgramFiles(relativePath) {
19
+ return [process.env.PROGRAMFILES, process.env['PROGRAMFILES(X86)'], process.env.LOCALAPPDATA]
20
+ .filter((dir) => !!dir)
21
+ .map(dir => Path.join(dir, relativePath));
22
+ }
23
+ function inPath(names) {
24
+ var dirs = (process.env.PATH || '').split(Path.delimiter).filter(dir => !!dir);
25
+ var result = [];
26
+ names.forEach(name => dirs.forEach(dir => result.push(Path.join(dir, name))));
27
+ return result;
28
+ }
29
+ const BROWSERS = {
30
+ chrome: {
31
+ envVar: 'CHROME_BIN',
32
+ candidates: () => process.platform == 'win32' ? inProgramFiles('Google\\Chrome\\Application\\chrome.exe') :
33
+ process.platform == 'darwin' ? ['/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'] :
34
+ inPath(['google-chrome', 'google-chrome-stable', 'chromium', 'chromium-browser']),
35
+ args: (profileDir, url) => [
36
+ '--headless', '--user-data-dir=' + profileDir, '--no-first-run', '--no-default-browser-check',
37
+ '--disable-gpu', '--disable-extensions', url
38
+ ]
39
+ },
40
+ firefox: {
41
+ envVar: 'FIREFOX_BIN',
42
+ candidates: () => process.platform == 'win32' ? inProgramFiles('Mozilla Firefox\\firefox.exe') :
43
+ process.platform == 'darwin' ? ['/Applications/Firefox.app/Contents/MacOS/firefox'] :
44
+ inPath(['firefox']),
45
+ args: (profileDir, url) => ['-headless', '-no-remote', '-wait-for-browser', '-profile', profileDir, url]
46
+ }
47
+ };
48
+ function isBrowserName(name) {
49
+ return Object.prototype.hasOwnProperty.call(BROWSERS, name);
50
+ }
51
+ function findExecutable(browser) {
52
+ var def = BROWSERS[browser];
53
+ var fromEnv = process.env[def.envVar];
54
+ if (fromEnv) {
55
+ if (!(0, fs_1.existsSync)(fromEnv)) {
56
+ throw new Error(`server4test: ${def.envVar}=${fromEnv} does not exist`);
57
+ }
58
+ return fromEnv;
59
+ }
60
+ var candidates = def.candidates();
61
+ var found = candidates.find(candidate => (0, fs_1.existsSync)(candidate));
62
+ if (found == null) {
63
+ throw new Error(`server4test: ${browser} not found. Set ${def.envVar}. Searched in: ${candidates.join(', ')}`);
64
+ }
65
+ return found;
66
+ }
67
+ function escapeHtmlAttr(text) {
68
+ return text.replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/</g, '&lt;');
69
+ }
70
+ function jsonForScript(value) {
71
+ return JSON.stringify(value).replace(/</g, '\\u003c');
72
+ }
73
+ function browserTestPage(baseUrl, browserTest) {
74
+ var url = (file) => escapeHtmlAttr(encodeURI(baseUrl + '/' + file.replace(/\\/g, '/').replace(/^\.?\//, '')));
75
+ return `<!doctype html>
76
+ <html>
77
+ <head>
78
+ <meta charset="utf-8">
79
+ <title>server4test browser test</title>
80
+ <link rel="stylesheet" href="${url('node_modules/mocha/mocha.css')}">
81
+ <script>
82
+ (function(){
83
+ var report = {userAgent: navigator.userAgent, console: [], loadErrors: [], errors: [], finished: false, tests: 0, passes: 0, pending: 0, failures: []};
84
+ window.server4testReport = report;
85
+ function asText(x){
86
+ if(typeof x === 'string') return x;
87
+ if(x instanceof Error) return x.stack || String(x);
88
+ if(x instanceof Date) return String(x);
89
+ try{
90
+ return JSON.stringify(x);
91
+ }catch(err){
92
+ return String(x);
93
+ }
94
+ }
95
+ ['log', 'info', 'warn', 'error', 'debug'].forEach(function(level){
96
+ var original = console[level];
97
+ console[level] = function(){
98
+ report.console.push({level: level, text: Array.prototype.map.call(arguments, asText).join(' ')});
99
+ return original.apply(console, arguments);
100
+ };
101
+ });
102
+ window.addEventListener('error', function(event){
103
+ var target = event.target;
104
+ if(target && target.tagName && (target.tagName == 'SCRIPT' || target.tagName == 'LINK')){
105
+ report.loadErrors.push(target.src || target.href);
106
+ }else if(target && target.tagName){
107
+ report.console.push({level: 'warn', text: 'can not load ' + target.tagName.toLowerCase() + ': ' + (target.src || target.href)});
108
+ }else{
109
+ report.errors.push((event.message || 'error') + ' at ' + event.filename + ':' + event.lineno + (event.error && event.error.stack ? '\\n' + event.error.stack : ''));
110
+ }
111
+ }, true);
112
+ })();
113
+ </script>
114
+ </head>
115
+ <body>
116
+ <div id="mocha"></div>
117
+ <script src="${url('node_modules/mocha/mocha.js')}"></script>
118
+ <script>
119
+ if(typeof mocha !== 'undefined') mocha.setup({ui: 'bdd'});
120
+ </script>
121
+ ${browserTest.files.map(file => /\.css$/i.test(file) ? `<link rel="stylesheet" href="${url(file)}">` : `<script src="${url(file)}"></script>`).join('\n')}
122
+ <script>
123
+ (function(){
124
+ var report = window.server4testReport;
125
+ var runId = new URLSearchParams(location.search).get('run');
126
+ function send(){
127
+ report.finished = true;
128
+ if(window.__coverage__) report.coverage = window.__coverage__;
129
+ fetch(${jsonForScript(baseUrl + exports.BROWSER_TEST_RESULT_PATH)} + (runId ? '?run=' + encodeURIComponent(runId) : ''), {
130
+ method: 'POST',
131
+ headers: {'Content-Type': 'application/json'},
132
+ body: JSON.stringify(report)
133
+ }).then(function(response){
134
+ if(!response.ok) throw new Error('server4test: result not accepted, status ' + response.status);
135
+ }).catch(function(err){
136
+ document.title = 'server4test: ' + err.message;
137
+ alert('server4test: ' + err.message);
138
+ });
139
+ }
140
+ if(typeof mocha === 'undefined'){
141
+ send();
142
+ return;
143
+ }
144
+ var runner = mocha.run();
145
+ runner.on('test end', function(){ report.tests++; });
146
+ runner.on('pass', function(){ report.passes++; });
147
+ runner.on('pending', function(){ report.pending++; });
148
+ runner.on('fail', function(test, err){
149
+ report.failures.push({title: test.fullTitle(), message: String(err && err.message), stack: err && err.stack});
150
+ });
151
+ runner.on('end', send);
152
+ })();
153
+ </script>
154
+ </body>
155
+ </html>
156
+ `;
157
+ }
158
+ function isObject(x) {
159
+ return typeof x === 'object' && x !== null;
160
+ }
161
+ function asStringArray(x, name) {
162
+ if (!Array.isArray(x) || !x.every(item => typeof item === 'string')) {
163
+ throw new Error(`server4test: invalid browser test report, ${name} must be an array of strings`);
164
+ }
165
+ return x;
166
+ }
167
+ function asNumber(x, name) {
168
+ if (typeof x !== 'number') {
169
+ throw new Error(`server4test: invalid browser test report, ${name} must be a number`);
170
+ }
171
+ return x;
172
+ }
173
+ function parseBrowserTestReport(body) {
174
+ if (!isObject(body)) {
175
+ throw new Error('server4test: invalid browser test report, must be an object');
176
+ }
177
+ if (!Array.isArray(body.console) || !body.console.every(line => isObject(line) && typeof line.level === 'string' && typeof line.text === 'string')) {
178
+ throw new Error('server4test: invalid browser test report, console must be an array of {level, text}');
179
+ }
180
+ if (!Array.isArray(body.failures) || !body.failures.every(failure => isObject(failure) && typeof failure.title === 'string' && typeof failure.message === 'string' && (failure.stack == null || typeof failure.stack === 'string'))) {
181
+ throw new Error('server4test: invalid browser test report, failures must be an array of {title, message, stack}');
182
+ }
183
+ if (body.coverage != null && !isObject(body.coverage)) {
184
+ throw new Error('server4test: invalid browser test report, coverage must be an object');
185
+ }
186
+ return Object.assign({ userAgent: String(body.userAgent), console: body.console, loadErrors: asStringArray(body.loadErrors, 'loadErrors'), errors: asStringArray(body.errors, 'errors'), finished: body.finished === true, tests: asNumber(body.tests, 'tests'), passes: asNumber(body.passes, 'passes'), pending: asNumber(body.pending, 'pending'), failures: body.failures }, (isObject(body.coverage) ? { coverage: body.coverage } : {}));
187
+ }
188
+ /** saves the coverage (if any) in the coverage-dir (default .nyc_output) to be used by nyc report */
189
+ async function saveBrowserTestCoverage(report, label, browserTest) {
190
+ var _a;
191
+ if (report.coverage == null)
192
+ return;
193
+ var dir = (_a = browserTest["coverage-dir"]) !== null && _a !== void 0 ? _a : exports.BROWSER_TEST_COVERAGE_DIR_DEFAULT;
194
+ var fileName = Path.join(dir, 'server4test-' + label.replace(/[^-A-Za-z_0-9]/g, '_') + '.json');
195
+ await fs_1.promises.mkdir(dir, { recursive: true });
196
+ await fs_1.promises.writeFile(fileName, JSON.stringify(report.coverage), 'utf8');
197
+ console.log(`[${label}] coverage saved in ${fileName}`);
198
+ }
199
+ /** prints the report and returns true if all is ok */
200
+ function printBrowserTestReport(report, label) {
201
+ console.log(`[${label}] ${report.userAgent}`);
202
+ report.console.forEach(line => console.log(`[${label}] ${line.level == 'log' ? '' : line.level + ': '}${line.text}`));
203
+ report.loadErrors.forEach(src => console.error(`[${label}] can not load: ${src}`));
204
+ report.errors.forEach(error => console.error(`[${label}] error: ${error}`));
205
+ report.failures.forEach((failure, i) => {
206
+ console.error(`[${label}] ${i + 1}) ${failure.title}`);
207
+ console.error(`[${label}] ${failure.stack || failure.message}`);
208
+ });
209
+ var ok = !report.loadErrors.length && !report.errors.length && !report.failures.length && report.tests > 0;
210
+ console.log(`[${label}] ${ok ? 'OK' : 'FAILED'}: ${report.tests} tests, ${report.passes} passing, ${report.failures.length} failing, ${report.pending} pending`);
211
+ if (report.tests == 0) {
212
+ console.error(`[${label}] no tests were run`);
213
+ }
214
+ return ok;
215
+ }
216
+ async function stopProcess(child) {
217
+ if (child.exitCode !== null || child.signalCode !== null)
218
+ return;
219
+ await new Promise(resolve => {
220
+ var timer = setTimeout(() => {
221
+ console.error('server4test: the browser process does not finish');
222
+ resolve();
223
+ }, 10000);
224
+ child.once('exit', () => {
225
+ clearTimeout(timer);
226
+ resolve();
227
+ });
228
+ child.kill();
229
+ });
230
+ }
231
+ async function runBrowser(server, baseUrl, browser, browserTest) {
232
+ var _a;
233
+ var timeout = (_a = browserTest.timeout) !== null && _a !== void 0 ? _a : exports.BROWSER_TEST_TIMEOUT_DEFAULT;
234
+ var executable = findExecutable(browser);
235
+ var profileDir = await fs_1.promises.mkdtemp(Path.join(os.tmpdir(), 'server4test-' + browser + '-'));
236
+ var runId = browser + '-' + Date.now();
237
+ var url = baseUrl + exports.BROWSER_TEST_PAGE_PATH + '?run=' + encodeURIComponent(runId);
238
+ var child = null;
239
+ var stderr = '';
240
+ console.log(`[${browser}] ${executable} ${url}`);
241
+ try {
242
+ var browserProcess = (0, child_process_1.spawn)(executable, BROWSERS[browser].args(profileDir, url), { stdio: ['ignore', 'ignore', 'pipe'] });
243
+ child = browserProcess;
244
+ var report = await new Promise((resolve, reject) => {
245
+ var _a;
246
+ var timer = setTimeout(() => reject(new Error(`server4test: timeout (${timeout}ms) waiting for ${browser} results`)), timeout);
247
+ server.browserTestListeners.set(runId, (report) => {
248
+ clearTimeout(timer);
249
+ resolve(report);
250
+ });
251
+ (_a = browserProcess.stderr) === null || _a === void 0 ? void 0 : _a.on('data', (chunk) => {
252
+ stderr = (stderr + chunk.toString()).slice(-8000);
253
+ });
254
+ browserProcess.on('error', (err) => {
255
+ clearTimeout(timer);
256
+ reject(err);
257
+ });
258
+ browserProcess.on('exit', (code, signal) => {
259
+ clearTimeout(timer);
260
+ reject(new Error(`server4test: ${browser} finished (code ${code}, signal ${signal}) before sending results`));
261
+ });
262
+ });
263
+ await saveBrowserTestCoverage(report, browser, browserTest);
264
+ return printBrowserTestReport(report, browser);
265
+ }
266
+ catch (err) {
267
+ console.error(`[${browser}]`, err);
268
+ if (stderr) {
269
+ console.error(`[${browser}] browser stderr:\n${stderr}`);
270
+ }
271
+ return false;
272
+ }
273
+ finally {
274
+ server.browserTestListeners.delete(runId);
275
+ if (child) {
276
+ await stopProcess(child);
277
+ }
278
+ try {
279
+ await fs_1.promises.rm(profileDir, { recursive: true, force: true, maxRetries: 10, retryDelay: 300 });
280
+ }
281
+ catch (err) {
282
+ console.error(`[${browser}] server4test: can not remove the temporary profile ${profileDir}`, err);
283
+ }
284
+ }
285
+ }
286
+ /** runs the browser test in each browser (comma separated list), returns true if all is ok */
287
+ async function runBrowsers(ServerConstructor, opts, browserList) {
288
+ var browserTest = opts["browser-test"];
289
+ if (browserTest == null) {
290
+ console.error('server4test: --run-browser needs "browser-test" in server4test-config');
291
+ return false;
292
+ }
293
+ if (!browserList) {
294
+ console.error('server4test: --run-browser needs a browser list, i.e.: --run-browser chrome,firefox');
295
+ return false;
296
+ }
297
+ var browsers = browserList.split(',');
298
+ var unknown = browsers.filter(browser => !isBrowserName(browser));
299
+ if (unknown.length) {
300
+ console.error(`server4test: unknown browser ${unknown.join(', ')}. Valid browsers: ${Object.keys(BROWSERS).join(', ')}`);
301
+ return false;
302
+ }
303
+ var server = new ServerConstructor(Object.assign(Object.assign({}, opts), { port: 0 }));
304
+ await server.start();
305
+ try {
306
+ var address = server.listener.address();
307
+ if (!isObject(address) || typeof address.port !== 'number') {
308
+ throw new Error('server4test: can not get the server port');
309
+ }
310
+ var baseUrl = 'http://localhost:' + address.port + opts["base-url"];
311
+ var ok = true;
312
+ for (var browser of browsers.filter(isBrowserName)) {
313
+ ok = await runBrowser(server, baseUrl, browser, browserTest) && ok;
314
+ }
315
+ return ok;
316
+ }
317
+ finally {
318
+ await server.closeServer();
319
+ }
320
+ }
321
+ //# sourceMappingURL=browser-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-runner.js","sourceRoot":"","sources":["../src/browser-runner.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import * as express from 'express';
2
2
  import * as serveContent from 'serve-content';
3
3
  import * as serveIndex from 'serve-index';
4
+ import { BrowserTestOpts, BrowserTestReport } from './browser-runner';
4
5
  type RequestDefinition = {
5
6
  method: 'get' | 'post' | 'put' | 'delete' | 'use';
6
7
  path: string;
@@ -25,6 +26,7 @@ export type Server4TestOpts = {
25
26
  deleteRequest: RequestDefinition;
26
27
  };
27
28
  "serve-index": serveIndex.Options;
29
+ "browser-test"?: BrowserTestOpts;
28
30
  };
29
31
  export declare type Request = express.Request;
30
32
  export declare type Response = express.Response;
@@ -42,6 +44,7 @@ export declare class Server4Test {
42
44
  opts: Server4TestOpts;
43
45
  port: number;
44
46
  listener: any;
47
+ browserTestListeners: Map<string, (report: BrowserTestReport) => void>;
45
48
  constructor(opts: Partial<Server4TestOpts>);
46
49
  start(): Promise<void>;
47
50
  webPackService(webPackOptions: any, webpackDevMiddlewareOptions?: any): any;
@@ -58,6 +61,7 @@ export declare class Server4Test {
58
61
  path: string;
59
62
  }[];
60
63
  directServices(): Array<ServiceDef>;
64
+ browserTestServices(browserTest: BrowserTestOpts): ServiceDef[];
61
65
  serveIndex4Test(baseUrl: string, path: string): void;
62
66
  closeServer(): Promise<void>;
63
67
  }
@@ -19,6 +19,7 @@ const fs = require("fs-extra");
19
19
  const fs_1 = require("fs");
20
20
  const Path = require("path");
21
21
  const cast_error_1 = require("cast-error");
22
+ const browser_runner_1 = require("./browser-runner");
22
23
  exports.CONFIG_DEFAULT = {
23
24
  port: 8080,
24
25
  verbose: true,
@@ -74,6 +75,7 @@ serveContent.transformer.styl = (0, best_globals_1.changing)(serveContent.transf
74
75
  class Server4Test {
75
76
  constructor(opts) {
76
77
  this.port = 3000;
78
+ this.browserTestListeners = new Map();
77
79
  this.app = express();
78
80
  this.opts = (0, best_globals_1.changing)(exports.CONFIG_DEFAULT, opts);
79
81
  this.app.use(cookieParser());
@@ -127,8 +129,18 @@ class Server4Test {
127
129
  });
128
130
  }
129
131
  webPackService(webPackOptions, webpackDevMiddlewareOptions) {
130
- const webpack = require('webpack');
131
- const middleware = require('webpack-dev-middleware');
132
+ var webpack, middleware;
133
+ try {
134
+ webpack = require('webpack');
135
+ middleware = require('webpack-dev-middleware');
136
+ }
137
+ catch (err) {
138
+ var error = (0, cast_error_1.unexpected)(err);
139
+ if (error.code == 'MODULE_NOT_FOUND') {
140
+ throw new Error("server4test: webpack.config.js found but webpack and webpack-dev-middleware are optional and not installed. Use: npm install --save-dev webpack webpack-dev-middleware. " + error.message);
141
+ }
142
+ throw error;
143
+ }
132
144
  const compiler = webpack(webPackOptions || {
133
145
  // webpack options
134
146
  });
@@ -228,8 +240,45 @@ class Server4Test {
228
240
  services = [...services, ...this.fileServices()];
229
241
  console.log('services', services);
230
242
  }
243
+ if (this.opts["browser-test"]) {
244
+ services = [...services, ...this.browserTestServices(this.opts["browser-test"])];
245
+ }
231
246
  return services;
232
247
  }
248
+ browserTestServices(browserTest) {
249
+ var jsonParser = express.json({ limit: '10mb' });
250
+ return [
251
+ { path: browser_runner_1.BROWSER_TEST_PAGE_PATH, method: 'get', html: (0, browser_runner_1.browserTestPage)(this.opts["base-url"], browserTest) },
252
+ { path: browser_runner_1.BROWSER_TEST_RESULT_PATH, method: 'post', middleware: (req, res) => {
253
+ jsonParser(req, res, (err) => {
254
+ try {
255
+ if (err)
256
+ throw err;
257
+ var report = (0, browser_runner_1.parseBrowserTestReport)(req.body);
258
+ var runId = typeof req.query.run === "string" ? req.query.run : null;
259
+ var listener = runId == null ? undefined : this.browserTestListeners.get(runId);
260
+ if (listener) {
261
+ listener(report);
262
+ res.send('ok');
263
+ }
264
+ else {
265
+ (0, browser_runner_1.saveBrowserTestCoverage)(report, 'browser', browserTest).then(() => {
266
+ (0, browser_runner_1.printBrowserTestReport)(report, 'browser');
267
+ res.send('ok');
268
+ }, (err) => {
269
+ console.error('server4test: can not save the browser test coverage', err);
270
+ res.status(500).send('can not save the coverage');
271
+ });
272
+ }
273
+ }
274
+ catch (err) {
275
+ console.error('server4test: invalid browser test report', err);
276
+ res.status(400).send('invalid browser test report');
277
+ }
278
+ });
279
+ } },
280
+ ];
281
+ }
233
282
  serveIndex4Test(baseUrl, path) {
234
283
  var server = this;
235
284
  server.app.use(baseUrl + '/', function (req, res, next) {
@@ -274,7 +323,7 @@ class Server4Test {
274
323
  exports.Server4Test = Server4Test;
275
324
  async function launch(opts) {
276
325
  var _a, e_1, _b, _c;
277
- var _d, _e, _f, _g, _h;
326
+ var _d, _e, _f, _g, _h, _j;
278
327
  var config = await MiniTools.readConfig([
279
328
  {
280
329
  serverClass: Server4Test,
@@ -285,6 +334,11 @@ async function launch(opts) {
285
334
  'local-config',
286
335
  ], { whenNotExist: 'ignore' });
287
336
  var ServerConstructor = config.serverClass;
337
+ var runBrowserIndex = process.argv.indexOf('--run-browser');
338
+ if (runBrowserIndex >= 0) {
339
+ process.exitCode = await (0, browser_runner_1.runBrowsers)(ServerConstructor, (0, best_globals_1.changing)(exports.CONFIG_DEFAULT, config.server4test), process.argv[runBrowserIndex + 1]) ? 0 : 1;
340
+ return;
341
+ }
288
342
  var server = new ServerConstructor(config.server4test);
289
343
  server.start();
290
344
  if (config.server4test.verbose) {
@@ -292,25 +346,28 @@ async function launch(opts) {
292
346
  console.dir(config, { depth: 6 });
293
347
  }
294
348
  console.log('server listening at', 'http://localhost:' + server.port + ((_d = config.server4test['base-url']) !== null && _d !== void 0 ? _d : '') + '?dir');
349
+ if (config.server4test['browser-test']) {
350
+ console.log('browser test at', 'http://localhost:' + server.port + ((_e = config.server4test['base-url']) !== null && _e !== void 0 ? _e : '') + browser_runner_1.BROWSER_TEST_PAGE_PATH);
351
+ }
295
352
  if (!config.server4test['server4test-directory']) {
296
353
  console.error('server4test-directory is not set to true');
297
354
  console.warn('try', 'server4test --super-insecure');
298
355
  var dir = await fs.opendir('.');
299
356
  try {
300
- for (var _j = true, dir_1 = __asyncValues(dir), dir_1_1; dir_1_1 = await dir_1.next(), _a = dir_1_1.done, !_a; _j = true) {
357
+ for (var _k = true, dir_1 = __asyncValues(dir), dir_1_1; dir_1_1 = await dir_1.next(), _a = dir_1_1.done, !_a; _k = true) {
301
358
  _c = dir_1_1.value;
302
- _j = false;
359
+ _k = false;
303
360
  const dirent = _c;
304
361
  var ext = Path.extname(dirent.name);
305
- if (((_e = config.server4test['serve-content']) === null || _e === void 0 ? void 0 : _e.allowAllExts) || ext && ((_g = (_f = config.server4test['serve-content']) === null || _f === void 0 ? void 0 : _f.allowedExts) === null || _g === void 0 ? void 0 : _g.includes(ext))) {
306
- console.log(' localhost:' + server.port + ((_h = config.server4test['base-url']) !== null && _h !== void 0 ? _h : '') + '/' + dirent.name);
362
+ if (((_f = config.server4test['serve-content']) === null || _f === void 0 ? void 0 : _f.allowAllExts) || ext && ((_h = (_g = config.server4test['serve-content']) === null || _g === void 0 ? void 0 : _g.allowedExts) === null || _h === void 0 ? void 0 : _h.includes(ext))) {
363
+ console.log(' localhost:' + server.port + ((_j = config.server4test['base-url']) !== null && _j !== void 0 ? _j : '') + '/' + dirent.name);
307
364
  }
308
365
  }
309
366
  }
310
367
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
311
368
  finally {
312
369
  try {
313
- if (!_j && !_a && (_b = dir_1.return)) await _b.call(dir_1);
370
+ if (!_k && !_a && (_b = dir_1.return)) await _b.call(dir_1);
314
371
  }
315
372
  finally { if (e_1) throw e_1.error; }
316
373
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server4test.js","sourceRoot":"","sources":["../src/server4test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server4test.js","sourceRoot":"","sources":["../src/server4test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "server4test",
3
3
  "description": "server for test",
4
- "version": "1.0.2",
4
+ "version": "2.0.0-rc.1",
5
5
  "files": [
6
6
  "lib"
7
7
  ],
@@ -33,15 +33,25 @@
33
33
  "express": "^5.2.1",
34
34
  "fs-extra": "^11.4.0",
35
35
  "serve-index": "^1.9.2",
36
- "typescript": "^5.7.2",
37
- "webpack": "^5.109.2",
38
- "webpack-dev-middleware": "^8.1.0",
39
36
  "best-globals": "^2.2.2",
40
37
  "cast-error": "^0.1.5",
41
38
  "mini-tools": "^1.13.10",
42
39
  "serve-content": "^1.0.5"
43
40
  },
41
+ "peerDependencies": {
42
+ "webpack": "^5.109.2",
43
+ "webpack-dev-middleware": "^8.1.0"
44
+ },
45
+ "peerDependenciesMeta": {
46
+ "webpack": {
47
+ "optional": true
48
+ },
49
+ "webpack-dev-middleware": {
50
+ "optional": true
51
+ }
52
+ },
44
53
  "devDependencies": {
54
+ "typescript": "^5.7.2",
45
55
  "@types/cookie-parser": "^1.4.10",
46
56
  "@types/express": "^5.0.6",
47
57
  "@types/fs-extra": "^11.0.4",