--- /dev/null
+import path from 'path';
+import glob from 'glob';
+
+// Find directories which have Nightwatch tests in them.
+const regex = /(.*\/?tests\/?.*\/Nightwatch)\/.*/g;
+const collectedFolders = {
+ Tests: [],
+ Commands: [],
+ Assertions: [],
+};
+const searchDirectory = process.env.DRUPAL_NIGHTWATCH_SEARCH_DIRECTORY || '';
+
+glob
+ .sync('**/tests/**/Nightwatch/**/*.js', {
+ cwd: path.resolve(process.cwd(), `../${searchDirectory}`),
+ ignore: process.env.DRUPAL_NIGHTWATCH_IGNORE_DIRECTORIES
+ ? process.env.DRUPAL_NIGHTWATCH_IGNORE_DIRECTORIES.split(',')
+ : [],
+ })
+ .forEach(file => {
+ let m = regex.exec(file);
+ while (m !== null) {
+ // This is necessary to avoid infinite loops with zero-width matches.
+ if (m.index === regex.lastIndex) {
+ regex.lastIndex += 1;
+ }
+
+ const key = `../${m[1]}`;
+ Object.keys(collectedFolders).forEach(folder => {
+ if (file.includes(`Nightwatch/${folder}`)) {
+ collectedFolders[folder].push(`${searchDirectory}${key}/${folder}`);
+ }
+ });
+ m = regex.exec(file);
+ }
+ });
+
+// Remove duplicate folders.
+Object.keys(collectedFolders).forEach(folder => {
+ collectedFolders[folder] = Array.from(new Set(collectedFolders[folder]));
+});
+
+module.exports = {
+ src_folders: collectedFolders.Tests,
+ output_folder: process.env.DRUPAL_NIGHTWATCH_OUTPUT,
+ custom_commands_path: collectedFolders.Commands,
+ custom_assertions_path: collectedFolders.Assertions,
+ page_objects_path: '',
+ globals_path: 'tests/Drupal/Nightwatch/globals.js',
+ selenium: {
+ start_process: false,
+ },
+ test_settings: {
+ default: {
+ selenium_port: process.env.DRUPAL_TEST_WEBDRIVER_PORT,
+ selenium_host: process.env.DRUPAL_TEST_WEBDRIVER_HOSTNAME,
+ default_path_prefix: process.env.DRUPAL_TEST_WEBDRIVER_PATH_PREFIX || '',
+ desiredCapabilities: {
+ browserName: 'chrome',
+ acceptSslCerts: true,
+ chromeOptions: {
+ args: process.env.DRUPAL_TEST_WEBDRIVER_CHROME_ARGS
+ ? process.env.DRUPAL_TEST_WEBDRIVER_CHROME_ARGS.split(' ')
+ : [],
+ },
+ },
+ screenshots: {
+ enabled: true,
+ on_failure: true,
+ on_error: true,
+ path: `${process.env.DRUPAL_NIGHTWATCH_OUTPUT}/screenshots`,
+ },
+ end_session_on_fail: false,
+ },
+ },
+};