server4test 1.0.0 → 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 +232 -5
- package/lib/browser-runner.d.ts +35 -0
- package/lib/browser-runner.js +310 -0
- package/lib/browser-runner.js.map +1 -0
- package/lib/server4test.d.ts +4 -0
- package/lib/server4test.js +73 -11
- package/lib/server4test.js.map +1 -1
- package/package.json +41 -20
package/README.md
CHANGED
|
@@ -1,33 +1,54 @@
|
|
|
1
1
|
# server4test
|
|
2
|
+
|
|
2
3
|
server for test
|
|
3
4
|
|
|
5
|
+
|
|
6
|
+
[](https://npmjs.org/package/server4test)
|
|
7
|
+
[](https://npmjs.org/package/server4test)
|
|
8
|
+
[](https://github.com/codenautas/server4test/actions/workflows/build-and-test.yml)
|
|
9
|
+
[](https://ci.appveyor.com/project/codenautas/server4test)
|
|
10
|
+
[](https://socket.dev/npm/package/server4test)
|
|
11
|
+
[](https://github.com/codenautas/server4test/actions/workflows/qa-control.yml)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
language: 
|
|
15
|
+
also available in:
|
|
16
|
+
[](LEEME.md)
|
|
17
|
+
|
|
18
|
+
|
|
4
19
|
# main goal
|
|
5
20
|
|
|
21
|
+
|
|
6
22
|
serve static files and a bit plus.
|
|
7
23
|
|
|
24
|
+
|
|
8
25
|
# usage
|
|
9
26
|
|
|
27
|
+
|
|
10
28
|
```cmd
|
|
11
29
|
npm install -g server4test
|
|
12
30
|
|
|
13
31
|
server4test
|
|
14
32
|
```
|
|
15
33
|
|
|
34
|
+
|
|
16
35
|
# config
|
|
17
36
|
|
|
18
|
-
|
|
37
|
+
|
|
38
|
+
_server4test_ reads the config from `server4test-config.yaml` or `server4test-config.json`
|
|
19
39
|
and merges with `local-config.yaml` or `local-config.json`.
|
|
20
40
|
|
|
21
41
|
The config format is:
|
|
22
42
|
|
|
43
|
+
|
|
23
44
|
```yaml
|
|
24
45
|
server4test:
|
|
25
46
|
port: 8080
|
|
26
47
|
verbose: true
|
|
27
48
|
serve-content: # see https://www.npmjs.com/package/serve-content
|
|
28
49
|
allowAllExts: false
|
|
29
|
-
allowedExts:
|
|
30
|
-
- png
|
|
50
|
+
allowedExts:
|
|
51
|
+
- png
|
|
31
52
|
- jpg
|
|
32
53
|
- svg
|
|
33
54
|
- html
|
|
@@ -38,8 +59,214 @@ server4test:
|
|
|
38
59
|
local-file-repo: # fast way to save status to files
|
|
39
60
|
enabled: false # enable fast way
|
|
40
61
|
delay: 200 # set an aditional delay to the responses
|
|
41
|
-
directory: local-file-repo # directory where save files
|
|
62
|
+
directory: local-file-repo # directory where save files
|
|
42
63
|
readRequest: { method: 'get', path: '/file-read' }
|
|
43
64
|
writeRequest: { method: 'get', path: '/file-write' }
|
|
44
65
|
deleteRequest: { method: 'get', path: '/file-delete' }
|
|
45
|
-
|
|
66
|
+
serve-index: # see https://www.npmjs.com/package/serve-index
|
|
67
|
+
icons: true
|
|
68
|
+
view: details
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## `--super-insecure`
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
Running `server4test --super-insecure` replaces the default config with a permissive
|
|
75
|
+
one, intended only for local testing:
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
- `serve-content.allowAllExts: true` (serves any extension)
|
|
79
|
+
- `serve-content.dotfiles: "allow"`
|
|
80
|
+
- `serve-content.index: ["index.html", "index.htm", "index.js"]`
|
|
81
|
+
- `server4test-directory: true`
|
|
82
|
+
- `local-file-repo.enabled: true`
|
|
83
|
+
- `serve-index.hidden: true` (lists hidden files)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
As the name says, do not use it to serve anything you would not publish.
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
# serving files
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
The files are served by [serve-content](https://www.npmjs.com/package/serve-content),
|
|
93
|
+
rooted at `public-dir` (defaults to the current working directory). `public-dir` also
|
|
94
|
+
accepts a list of directories, tried in order.
|
|
95
|
+
|
|
96
|
+
A file is served only if its extension is listed in `serve-content.allowedExts`
|
|
97
|
+
(or if `allowAllExts` is set). Extensions not in the list are not served.
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
## transformed files
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
Some files are compiled on the fly, so they are requested **without** their extension:
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
| file | request | result |
|
|
107
|
+
| ----------- | -------------- | ------ |
|
|
108
|
+
| `page.jade` | `/page` | html |
|
|
109
|
+
| `page.md` | `/page` | html |
|
|
110
|
+
| `style.styl`| `/style.css` | css |
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
The `.jade` and `.styl` files can also be requested with their own extension
|
|
114
|
+
(`/page.jade`, `/style.styl`) to get the source, if the extension is allowed.
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
## directory index
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
When the request points to a directory, the index file is resolved by
|
|
121
|
+
[serve-static](https://www.npmjs.com/package/serve-static), which looks for a
|
|
122
|
+
**literal** file name on disk. By default that is `index.html`; the list can be
|
|
123
|
+
changed with `serve-content.index`.
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
Note that the transformation described above does **not** apply here: an
|
|
127
|
+
`index.jade` in the directory is not compiled and served as the index, and adding
|
|
128
|
+
`index` to `serve-content.index` does not help either, because the lookup is a
|
|
129
|
+
plain file lookup with no extension resolution. To serve a jade index, request it
|
|
130
|
+
explicitly as `/the-directory/index`.
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
# directory listing
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
Adding `?dir` to any URL serves the directory listing for that path, using
|
|
137
|
+
[serve-index](https://www.npmjs.com/package/serve-index):
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
http://localhost:8080/?dir
|
|
142
|
+
http://localhost:8080/some/folder?dir
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
The listing is only available when:
|
|
147
|
+
|
|
148
|
+
- `server4test-directory` is set to `true` (it is `false` by default; `--super-insecure` sets it), and
|
|
149
|
+
- the path is under the **first** directory of `public-dir` (when a list is used, only the first one is listed).
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
In the generated listing the links to directories keep the `?dir` suffix, so the
|
|
153
|
+
listing can be navigated; the links to files point to the files themselves.
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
# echo
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
With `echo: true` a `/echo` service is added, that answers with the received
|
|
160
|
+
`query`, `path`, `headers`, `cookies`, `ip`, `originalUrl` and `xhr`. Useful to
|
|
161
|
+
inspect what the client is actually sending.
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
# webpack
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
If a `webpack.config.js` exists in the current directory, it is loaded and served
|
|
168
|
+
through [webpack-dev-middleware](https://www.npmjs.com/package/webpack-dev-middleware)
|
|
169
|
+
(by default under `/dist`).
|
|
170
|
+
|
|
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
|
+
|
|
180
|
+
# local-file-repo
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
A minimal file store to keep state between reloads while testing. When
|
|
184
|
+
`local-file-repo.enabled` is true, three services are added:
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
| request | action |
|
|
188
|
+
| ----------------------------------------- | ------ |
|
|
189
|
+
| `/file-read?file=NAME` | returns `{content, timestamp}` |
|
|
190
|
+
| `/file-write?file=NAME&content=TEXT` | writes the file, returns `{timestamp}` |
|
|
191
|
+
| `/file-delete?file=NAME` | deletes the file, returns `{timestamp}` |
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
The paths and methods are configurable with `readRequest`, `writeRequest` and
|
|
195
|
+
`deleteRequest`. The files are stored in `local-file-repo.directory`, and the name
|
|
196
|
+
is sanitized (any character outside `-A-Za-z_0-9.@` is replaced by `_`), so the
|
|
197
|
+
store is flat and cannot escape the directory. A random delay of up to
|
|
198
|
+
`local-file-repo.delay` milliseconds is added to each response, to make the
|
|
199
|
+
asynchrony visible while testing.
|
|
200
|
+
|
|
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
|
+
|
|
248
|
+
# using it as a library
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
The server can be extended to add services, overriding `directServices()`:
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
```typescript
|
|
255
|
+
import {Server4Test, Server4TestOpts, launch} from "server4test";
|
|
256
|
+
|
|
257
|
+
class ExampleServer extends Server4Test{
|
|
258
|
+
directServices(){
|
|
259
|
+
return super.directServices().concat([
|
|
260
|
+
{path:'/dummy1' , html:'dummy 1'},
|
|
261
|
+
{path:'/up-time', html:new Date().toString()},
|
|
262
|
+
])
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
launch({serverClass:ExampleServer, server4test:{port:3339, verbose:true}})
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
Each service is `{path, method?}` plus either `html` (served as html) or
|
|
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, '&').replace(/"/g, '"').replace(/</g, '<');
|
|
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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"}
|
package/lib/server4test.d.ts
CHANGED
|
@@ -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
|
}
|
package/lib/server4test.js
CHANGED
|
@@ -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,
|
|
@@ -65,11 +66,16 @@ exports.CONFIG_SUPER_INSECURE = Object.assign(Object.assign({}, exports.CONFIG_D
|
|
|
65
66
|
".styl":{extOriginal:"styl"},
|
|
66
67
|
*/
|
|
67
68
|
}, "server4test-directory": true, "local-file-repo": Object.assign(Object.assign({}, exports.CONFIG_DEFAULT["local-file-repo"]), { enabled: true }), "serve-index": Object.assign(Object.assign({}, exports.CONFIG_DEFAULT["serve-index"]), { hidden: true }) });
|
|
68
|
-
serveContent.transformer
|
|
69
|
+
var jadeTransformer = (serveContent.transformer[''] instanceof Array ? serveContent.transformer[''] : [serveContent.transformer['']]).find(transformer => transformer.optionName == 'jade');
|
|
70
|
+
if (jadeTransformer == null) {
|
|
71
|
+
throw new Error("server4test: can not find the 'jade' transformer in serve-content");
|
|
72
|
+
}
|
|
73
|
+
serveContent.transformer.jade = (0, best_globals_1.changing)(jadeTransformer, { /*extOriginal:'jade', */ optionName: 'jade-direct' });
|
|
69
74
|
serveContent.transformer.styl = (0, best_globals_1.changing)(serveContent.transformer.css, { /*extOriginal:'styl', */ optionName: 'styl-direct' });
|
|
70
75
|
class Server4Test {
|
|
71
76
|
constructor(opts) {
|
|
72
77
|
this.port = 3000;
|
|
78
|
+
this.browserTestListeners = new Map();
|
|
73
79
|
this.app = express();
|
|
74
80
|
this.opts = (0, best_globals_1.changing)(exports.CONFIG_DEFAULT, opts);
|
|
75
81
|
this.app.use(cookieParser());
|
|
@@ -111,13 +117,30 @@ class Server4Test {
|
|
|
111
117
|
}
|
|
112
118
|
server.app.use(baseUrl + '/', serveContent(path, optsGenericForFiles));
|
|
113
119
|
});
|
|
114
|
-
await new Promise(function (resolve,
|
|
115
|
-
server.listener = server.app.listen(server.port,
|
|
120
|
+
await new Promise(function (resolve, reject) {
|
|
121
|
+
server.listener = server.app.listen(server.port, function (error) {
|
|
122
|
+
if (error) {
|
|
123
|
+
reject(error);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
resolve();
|
|
127
|
+
}
|
|
128
|
+
});
|
|
116
129
|
});
|
|
117
130
|
}
|
|
118
131
|
webPackService(webPackOptions, webpackDevMiddlewareOptions) {
|
|
119
|
-
|
|
120
|
-
|
|
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
|
+
}
|
|
121
144
|
const compiler = webpack(webPackOptions || {
|
|
122
145
|
// webpack options
|
|
123
146
|
});
|
|
@@ -217,8 +240,39 @@ class Server4Test {
|
|
|
217
240
|
services = [...services, ...this.fileServices()];
|
|
218
241
|
console.log('services', services);
|
|
219
242
|
}
|
|
243
|
+
if (this.opts["browser-test"]) {
|
|
244
|
+
services = [...services, ...this.browserTestServices(this.opts["browser-test"])];
|
|
245
|
+
}
|
|
220
246
|
return services;
|
|
221
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
|
+
}
|
|
222
276
|
serveIndex4Test(baseUrl, path) {
|
|
223
277
|
var server = this;
|
|
224
278
|
server.app.use(baseUrl + '/', function (req, res, next) {
|
|
@@ -263,7 +317,7 @@ class Server4Test {
|
|
|
263
317
|
exports.Server4Test = Server4Test;
|
|
264
318
|
async function launch(opts) {
|
|
265
319
|
var _a, e_1, _b, _c;
|
|
266
|
-
var _d, _e, _f, _g, _h;
|
|
320
|
+
var _d, _e, _f, _g, _h, _j;
|
|
267
321
|
var config = await MiniTools.readConfig([
|
|
268
322
|
{
|
|
269
323
|
serverClass: Server4Test,
|
|
@@ -274,6 +328,11 @@ async function launch(opts) {
|
|
|
274
328
|
'local-config',
|
|
275
329
|
], { whenNotExist: 'ignore' });
|
|
276
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
|
+
}
|
|
277
336
|
var server = new ServerConstructor(config.server4test);
|
|
278
337
|
server.start();
|
|
279
338
|
if (config.server4test.verbose) {
|
|
@@ -281,25 +340,28 @@ async function launch(opts) {
|
|
|
281
340
|
console.dir(config, { depth: 6 });
|
|
282
341
|
}
|
|
283
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
|
+
}
|
|
284
346
|
if (!config.server4test['server4test-directory']) {
|
|
285
347
|
console.error('server4test-directory is not set to true');
|
|
286
348
|
console.warn('try', 'server4test --super-insecure');
|
|
287
349
|
var dir = await fs.opendir('.');
|
|
288
350
|
try {
|
|
289
|
-
for (var
|
|
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) {
|
|
290
352
|
_c = dir_1_1.value;
|
|
291
|
-
|
|
353
|
+
_k = false;
|
|
292
354
|
const dirent = _c;
|
|
293
355
|
var ext = Path.extname(dirent.name);
|
|
294
|
-
if (((
|
|
295
|
-
console.log(' localhost:' + server.port + ((
|
|
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);
|
|
296
358
|
}
|
|
297
359
|
}
|
|
298
360
|
}
|
|
299
361
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
300
362
|
finally {
|
|
301
363
|
try {
|
|
302
|
-
if (!
|
|
364
|
+
if (!_k && !_a && (_b = dir_1.return)) await _b.call(dir_1);
|
|
303
365
|
}
|
|
304
366
|
finally { if (e_1) throw e_1.error; }
|
|
305
367
|
}
|
package/lib/server4test.js.map
CHANGED
|
@@ -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": "
|
|
4
|
+
"version": "2.0.0-rc.0",
|
|
5
5
|
"files": [
|
|
6
6
|
"lib"
|
|
7
7
|
],
|
|
@@ -19,33 +19,53 @@
|
|
|
19
19
|
"bin": {
|
|
20
20
|
"server4test": "./lib/launch4test.js"
|
|
21
21
|
},
|
|
22
|
+
"overrides": {
|
|
23
|
+
"@babel/core": ">=7.29.6",
|
|
24
|
+
"diff": ">=8.0.2",
|
|
25
|
+
"serialize-javascript": ">=7.0.0",
|
|
26
|
+
"stylus": {
|
|
27
|
+
"glob": "^11"
|
|
28
|
+
},
|
|
29
|
+
"uuid": ">=14.0.0"
|
|
30
|
+
},
|
|
22
31
|
"dependencies": {
|
|
23
32
|
"cookie-parser": "^1.4.7",
|
|
24
|
-
"express": "^
|
|
25
|
-
"fs-extra": "^11.
|
|
26
|
-
"serve-index": "^1.9.
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
"
|
|
33
|
+
"express": "^5.2.1",
|
|
34
|
+
"fs-extra": "^11.4.0",
|
|
35
|
+
"serve-index": "^1.9.2",
|
|
36
|
+
"best-globals": "^2.2.2",
|
|
37
|
+
"cast-error": "^0.1.5",
|
|
38
|
+
"mini-tools": "^1.13.10",
|
|
39
|
+
"serve-content": "^1.0.5"
|
|
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
|
+
}
|
|
34
52
|
},
|
|
35
53
|
"devDependencies": {
|
|
36
|
-
"
|
|
37
|
-
"@types/
|
|
54
|
+
"typescript": "^5.7.2",
|
|
55
|
+
"@types/cookie-parser": "^1.4.10",
|
|
56
|
+
"@types/express": "^5.0.6",
|
|
38
57
|
"@types/fs-extra": "^11.0.4",
|
|
39
58
|
"@types/mocha": "^10.0.10",
|
|
40
|
-
"@types/node": "^
|
|
59
|
+
"@types/node": "^26.1.2",
|
|
41
60
|
"@types/serve-index": "^1.9.4",
|
|
42
61
|
"es5-shim": "^4.6.7",
|
|
43
62
|
"fetch-ie8": "^1.5.0",
|
|
44
|
-
"mocha": "^
|
|
63
|
+
"mocha": "^12.0.0-rc.5",
|
|
45
64
|
"whatwg-fetch": "^3.6.20",
|
|
46
|
-
"
|
|
65
|
+
"qa-control": "^0.9.1",
|
|
66
|
+
"require-bro": "^0.3.6",
|
|
47
67
|
"types.d.ts": "^0.6.22",
|
|
48
|
-
"mixin-patch": "^0.
|
|
68
|
+
"mixin-patch": "^1.0.0-rc.3"
|
|
49
69
|
},
|
|
50
70
|
"engines": {
|
|
51
71
|
"node": ">= 20"
|
|
@@ -65,11 +85,12 @@
|
|
|
65
85
|
"mixin-patch": "mixin-patch"
|
|
66
86
|
},
|
|
67
87
|
"qa-control": {
|
|
68
|
-
"package-version": "0.3.0",
|
|
69
88
|
"coverage": 0,
|
|
70
89
|
"run-in": "client",
|
|
71
|
-
"
|
|
72
|
-
"
|
|
90
|
+
"type": "lib",
|
|
91
|
+
"gha": "all",
|
|
92
|
+
"test-appveyor": true,
|
|
93
|
+
"multilang": "yes"
|
|
73
94
|
},
|
|
74
95
|
"mixin-patch": {
|
|
75
96
|
"patch": [
|