blob: fe50dfaaa7e1898c215bcb5ccb43f85664869b7b (
plain) (
blame)
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
|
import { spawn } from 'child_process';
import path from 'path';
import fs from 'fs';
import mkdirp from 'mkdirp';
import chromedriver from 'chromedriver';
import nightwatchSettings from './nightwatch.conf';
const commandAsWebserver = (command) => {
if (process.env.DRUPAL_TEST_WEBSERVER_USER) {
return `sudo -u ${process.env.DRUPAL_TEST_WEBSERVER_USER} ${command}`;
}
return command;
};
module.exports = {
before: (done) => {
if (JSON.parse(process.env.DRUPAL_TEST_CHROMEDRIVER_AUTOSTART)) {
chromedriver.start();
}
done();
},
after: (done) => {
if (JSON.parse(process.env.DRUPAL_TEST_CHROMEDRIVER_AUTOSTART)) {
chromedriver.stop();
}
done();
},
afterEach: (browser, done) => {
// Writes the console log - used by the "logAndEnd" command.
if (
browser.drupalLogConsole &&
(!browser.drupalLogConsoleOnlyOnError || browser.currentTest.results.errors > 0 || browser.currentTest.results.failed > 0)
) {
let testName = browser.currentTest.name || browser.currentTest.module;
testName = testName.split(' ').join('-');
const resultPath = path.join(__dirname, `../../../${nightwatchSettings.output_folder}/consoleLogs/${browser.currentTest.module}`);
const status = browser.currentTest.results.errors > 0 || browser.currentTest.results.failed > 0 ? 'FAILED' : 'PASSED';
mkdirp.sync(resultPath);
const now = new Date().toString().split(' ').join('-');
browser
.getLog('browser', (logEntries) => {
const browserLog = JSON.stringify(logEntries, null, ' ');
fs.writeFileSync(`${resultPath}/${testName}_${status}_${now}_console.json`, browserLog);
})
.end(done);
}
else {
browser.end(done);
}
},
commandAsWebserver,
};
|