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,
|
|
};
|