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