67 lines
1.9 KiB
JavaScript
67 lines
1.9 KiB
JavaScript
![]() |
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)
|
||
|
) {
|
||
|
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().replace(/[\s]+/g, '-');
|
||
|
const testName = (
|
||
|
browser.currentTest.name || browser.currentTest.module
|
||
|
).replace(/[\s/]+/g, '-');
|
||
|
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,
|
||
|
};
|