1 import path from 'path';
2 import glob from 'glob';
4 // Find directories which have Nightwatch tests in them.
5 const regex = /(.*\/?tests\/?.*\/Nightwatch)\/.*/g;
6 const collectedFolders = {
11 const searchDirectory = process.env.DRUPAL_NIGHTWATCH_SEARCH_DIRECTORY || '';
14 .sync('**/tests/**/Nightwatch/**/*.js', {
15 cwd: path.resolve(process.cwd(), `../${searchDirectory}`),
16 ignore: process.env.DRUPAL_NIGHTWATCH_IGNORE_DIRECTORIES
17 ? process.env.DRUPAL_NIGHTWATCH_IGNORE_DIRECTORIES.split(',')
21 let m = regex.exec(file);
23 // This is necessary to avoid infinite loops with zero-width matches.
24 if (m.index === regex.lastIndex) {
28 const key = `../${m[1]}`;
29 Object.keys(collectedFolders).forEach(folder => {
30 if (file.includes(`Nightwatch/${folder}`)) {
31 collectedFolders[folder].push(`${searchDirectory}${key}/${folder}`);
38 // Remove duplicate folders.
39 Object.keys(collectedFolders).forEach(folder => {
40 collectedFolders[folder] = Array.from(new Set(collectedFolders[folder]));
44 src_folders: collectedFolders.Tests,
45 output_folder: process.env.DRUPAL_NIGHTWATCH_OUTPUT,
46 custom_commands_path: collectedFolders.Commands,
47 custom_assertions_path: collectedFolders.Assertions,
48 page_objects_path: '',
49 globals_path: 'tests/Drupal/Nightwatch/globals.js',
55 selenium_port: process.env.DRUPAL_TEST_WEBDRIVER_PORT,
56 selenium_host: process.env.DRUPAL_TEST_WEBDRIVER_HOSTNAME,
57 default_path_prefix: process.env.DRUPAL_TEST_WEBDRIVER_PATH_PREFIX || '',
58 desiredCapabilities: {
59 browserName: 'chrome',
62 args: process.env.DRUPAL_TEST_WEBDRIVER_CHROME_ARGS
63 ? process.env.DRUPAL_TEST_WEBDRIVER_CHROME_ARGS.split(' ')
71 path: `${process.env.DRUPAL_NIGHTWATCH_OUTPUT}/screenshots`,
73 end_session_on_fail: false,