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