annotate core/tests/Drupal/Nightwatch/globals.js @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
rev   line source
Chris@17 1 import { spawn } from 'child_process';
Chris@17 2 import path from 'path';
Chris@17 3 import fs from 'fs';
Chris@17 4 import mkdirp from 'mkdirp';
Chris@17 5 import chromedriver from 'chromedriver';
Chris@17 6 import nightwatchSettings from './nightwatch.conf';
Chris@17 7
Chris@17 8 const commandAsWebserver = command => {
Chris@17 9 if (process.env.DRUPAL_TEST_WEBSERVER_USER) {
Chris@17 10 return `sudo -u ${process.env.DRUPAL_TEST_WEBSERVER_USER} ${command}`;
Chris@17 11 }
Chris@17 12 return command;
Chris@17 13 };
Chris@17 14
Chris@17 15 module.exports = {
Chris@17 16 before: done => {
Chris@17 17 if (JSON.parse(process.env.DRUPAL_TEST_CHROMEDRIVER_AUTOSTART)) {
Chris@17 18 chromedriver.start();
Chris@17 19 }
Chris@17 20 done();
Chris@17 21 },
Chris@17 22 after: done => {
Chris@17 23 if (JSON.parse(process.env.DRUPAL_TEST_CHROMEDRIVER_AUTOSTART)) {
Chris@17 24 chromedriver.stop();
Chris@17 25 }
Chris@17 26 done();
Chris@17 27 },
Chris@17 28 afterEach: (browser, done) => {
Chris@17 29 // Writes the console log - used by the "logAndEnd" command.
Chris@17 30 if (
Chris@17 31 browser.drupalLogConsole &&
Chris@17 32 (!browser.drupalLogConsoleOnlyOnError ||
Chris@17 33 browser.currentTest.results.errors > 0 ||
Chris@17 34 browser.currentTest.results.failed > 0)
Chris@17 35 ) {
Chris@17 36 const resultPath = path.join(
Chris@17 37 __dirname,
Chris@17 38 `../../../${nightwatchSettings.output_folder}/consoleLogs/${
Chris@17 39 browser.currentTest.module
Chris@17 40 }`,
Chris@17 41 );
Chris@17 42 const status =
Chris@17 43 browser.currentTest.results.errors > 0 ||
Chris@17 44 browser.currentTest.results.failed > 0
Chris@17 45 ? 'FAILED'
Chris@17 46 : 'PASSED';
Chris@17 47 mkdirp.sync(resultPath);
Chris@17 48 const now = new Date().toString().replace(/[\s]+/g, '-');
Chris@17 49 const testName = (
Chris@17 50 browser.currentTest.name || browser.currentTest.module
Chris@17 51 ).replace(/[\s/]+/g, '-');
Chris@17 52 browser
Chris@17 53 .getLog('browser', logEntries => {
Chris@17 54 const browserLog = JSON.stringify(logEntries, null, ' ');
Chris@17 55 fs.writeFileSync(
Chris@17 56 `${resultPath}/${testName}_${status}_${now}_console.json`,
Chris@17 57 browserLog,
Chris@17 58 );
Chris@17 59 })
Chris@17 60 .end(done);
Chris@17 61 } else {
Chris@17 62 browser.end(done);
Chris@17 63 }
Chris@17 64 },
Chris@17 65 commandAsWebserver,
Chris@17 66 };