-
Notifications
You must be signed in to change notification settings - Fork 6
/
globals.js
117 lines (95 loc) · 2.7 KB
/
globals.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
const setup = require('../lib/setup.js');
const http = require('http');
let viteServer;
const isWorker = process.argv.includes('--test-worker');
const startViteServer = async function (settings = {}) {
settings.vite_dev_server = Object.assign({
start_vite: true,
port: 5173
}, settings.vite_dev_server || {});
let vite_port;
if (settings.vite_dev_server.start_vite) {
viteServer = await setup();
// This will make sure the launch Url is set correctly when mounting the Vue component
settings.vite_dev_server.port = vite_port = viteServer.config.server.port;
} else {
vite_port = settings.vite_dev_server.port;
try {
const enabled = await makeViteRequest(vite_port);
if (!enabled) {
const error = new Error('Missing vite-plugin-nightwatch');
const code = `:
import nightwatchPlugin from 'vite-plugin-nightwatch'
export default {
plugins: [
// ... other plugins
nightwatchPlugin({
componentType: 'vue'
})
]
};
`;
error.help = ['Please ensure that "vite-plugin-nightwatch" is loaded in your Vite config file ' + code];
error.link = 'https://nightwatchjs.org/guide/component-testing/vite-plugin.html';
throw error;
}
return true;
} catch (err) {
const error = new Error('Vite dev server is not running: \n ' + err.message);
error.help = [`You can configure Nightwatch to start Vite automatically by adding this to your nightwatch.conf.js:
vite_dev_server: {
start_vite: true,
port: 5173
}
`];
error.link = 'https://nightwatchjs.org/guide/component-testing/vite-plugin.html';
throw error;
}
}
this.launchUrl = this.baseUrl = `http://localhost:${vite_port}`;
};
const stopViteServer = async () => {
if (viteServer) {
await viteServer.close();
viteServer = null;
}
};
module.exports = {
async beforeEach(settings) {
if (isWorker) {
await startViteServer.call(this, settings);
}
},
async before(settings) {
if (!settings.parallel_mode && !settings.testWorkersEnabled) {
await startViteServer.call(this, settings);
}
},
async after() {
await stopViteServer();
},
async afterEach() {
if (isWorker) {
await stopViteServer();
}
}
};
function makeViteRequest(port) {
const options = {
host: 'localhost',
port,
path: '/_nightwatch'
};
return new Promise((resolve, reject) => {
const req = http.request(options, function(response) {
if (response.statusCode === 404) {
return resolve(false);
}
resolve(true);
});
req.on('error', err => {
reject(err);
});
req.end();
});
}