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