Chris@17
|
1 import path from 'path';
|
Chris@17
|
2 import glob from 'glob';
|
Chris@17
|
3
|
Chris@17
|
4 // Find directories which have Nightwatch tests in them.
|
Chris@17
|
5 const regex = /(.*\/?tests\/?.*\/Nightwatch)\/.*/g;
|
Chris@17
|
6 const collectedFolders = {
|
Chris@17
|
7 Tests: [],
|
Chris@17
|
8 Commands: [],
|
Chris@17
|
9 Assertions: [],
|
Chris@18
|
10 Pages: [],
|
Chris@17
|
11 };
|
Chris@17
|
12 const searchDirectory = process.env.DRUPAL_NIGHTWATCH_SEARCH_DIRECTORY || '';
|
Chris@17
|
13
|
Chris@17
|
14 glob
|
Chris@17
|
15 .sync('**/tests/**/Nightwatch/**/*.js', {
|
Chris@17
|
16 cwd: path.resolve(process.cwd(), `../${searchDirectory}`),
|
Chris@17
|
17 ignore: process.env.DRUPAL_NIGHTWATCH_IGNORE_DIRECTORIES
|
Chris@17
|
18 ? process.env.DRUPAL_NIGHTWATCH_IGNORE_DIRECTORIES.split(',')
|
Chris@17
|
19 : [],
|
Chris@17
|
20 })
|
Chris@17
|
21 .forEach(file => {
|
Chris@17
|
22 let m = regex.exec(file);
|
Chris@17
|
23 while (m !== null) {
|
Chris@17
|
24 // This is necessary to avoid infinite loops with zero-width matches.
|
Chris@17
|
25 if (m.index === regex.lastIndex) {
|
Chris@17
|
26 regex.lastIndex += 1;
|
Chris@17
|
27 }
|
Chris@17
|
28
|
Chris@17
|
29 const key = `../${m[1]}`;
|
Chris@17
|
30 Object.keys(collectedFolders).forEach(folder => {
|
Chris@17
|
31 if (file.includes(`Nightwatch/${folder}`)) {
|
Chris@17
|
32 collectedFolders[folder].push(`${searchDirectory}${key}/${folder}`);
|
Chris@17
|
33 }
|
Chris@17
|
34 });
|
Chris@17
|
35 m = regex.exec(file);
|
Chris@17
|
36 }
|
Chris@17
|
37 });
|
Chris@17
|
38
|
Chris@17
|
39 // Remove duplicate folders.
|
Chris@17
|
40 Object.keys(collectedFolders).forEach(folder => {
|
Chris@17
|
41 collectedFolders[folder] = Array.from(new Set(collectedFolders[folder]));
|
Chris@17
|
42 });
|
Chris@17
|
43
|
Chris@17
|
44 module.exports = {
|
Chris@17
|
45 src_folders: collectedFolders.Tests,
|
Chris@17
|
46 output_folder: process.env.DRUPAL_NIGHTWATCH_OUTPUT,
|
Chris@17
|
47 custom_commands_path: collectedFolders.Commands,
|
Chris@17
|
48 custom_assertions_path: collectedFolders.Assertions,
|
Chris@18
|
49 page_objects_path: collectedFolders.Pages,
|
Chris@17
|
50 globals_path: 'tests/Drupal/Nightwatch/globals.js',
|
Chris@17
|
51 selenium: {
|
Chris@17
|
52 start_process: false,
|
Chris@17
|
53 },
|
Chris@17
|
54 test_settings: {
|
Chris@17
|
55 default: {
|
Chris@17
|
56 selenium_port: process.env.DRUPAL_TEST_WEBDRIVER_PORT,
|
Chris@17
|
57 selenium_host: process.env.DRUPAL_TEST_WEBDRIVER_HOSTNAME,
|
Chris@17
|
58 default_path_prefix: process.env.DRUPAL_TEST_WEBDRIVER_PATH_PREFIX || '',
|
Chris@17
|
59 desiredCapabilities: {
|
Chris@17
|
60 browserName: 'chrome',
|
Chris@17
|
61 acceptSslCerts: true,
|
Chris@17
|
62 chromeOptions: {
|
Chris@17
|
63 args: process.env.DRUPAL_TEST_WEBDRIVER_CHROME_ARGS
|
Chris@17
|
64 ? process.env.DRUPAL_TEST_WEBDRIVER_CHROME_ARGS.split(' ')
|
Chris@17
|
65 : [],
|
Chris@17
|
66 },
|
Chris@17
|
67 },
|
Chris@17
|
68 screenshots: {
|
Chris@17
|
69 enabled: true,
|
Chris@17
|
70 on_failure: true,
|
Chris@17
|
71 on_error: true,
|
Chris@17
|
72 path: `${process.env.DRUPAL_NIGHTWATCH_OUTPUT}/screenshots`,
|
Chris@17
|
73 },
|
Chris@17
|
74 end_session_on_fail: false,
|
Chris@17
|
75 },
|
Chris@17
|
76 },
|
Chris@17
|
77 };
|