d27517045a7433dcd7b25bf7ce0055a03a0e0a9c
[yaffs-website] / web / core / tests / Drupal / Nightwatch / nightwatch.conf.js
1 import path from 'path';
2 import glob from 'glob';
3
4 // Find directories which have Nightwatch tests in them.
5 const regex = /(.*\/?tests\/?.*\/Nightwatch)\/.*/g;
6 const collectedFolders = {
7   Tests: [],
8   Commands: [],
9   Assertions: [],
10 };
11 const searchDirectory = process.env.DRUPAL_NIGHTWATCH_SEARCH_DIRECTORY || '';
12
13 glob
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(',')
18       : [],
19   })
20   .forEach(file => {
21     let m = regex.exec(file);
22     while (m !== null) {
23       // This is necessary to avoid infinite loops with zero-width matches.
24       if (m.index === regex.lastIndex) {
25         regex.lastIndex += 1;
26       }
27
28       const key = `../${m[1]}`;
29       Object.keys(collectedFolders).forEach(folder => {
30         if (file.includes(`Nightwatch/${folder}`)) {
31           collectedFolders[folder].push(`${searchDirectory}${key}/${folder}`);
32         }
33       });
34       m = regex.exec(file);
35     }
36   });
37
38 // Remove duplicate folders.
39 Object.keys(collectedFolders).forEach(folder => {
40   collectedFolders[folder] = Array.from(new Set(collectedFolders[folder]));
41 });
42
43 module.exports = {
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',
50   selenium: {
51     start_process: false,
52   },
53   test_settings: {
54     default: {
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',
60         acceptSslCerts: true,
61         chromeOptions: {
62           args: process.env.DRUPAL_TEST_WEBDRIVER_CHROME_ARGS
63             ? process.env.DRUPAL_TEST_WEBDRIVER_CHROME_ARGS.split(' ')
64             : [],
65         },
66       },
67       screenshots: {
68         enabled: true,
69         on_failure: true,
70         on_error: true,
71         path: `${process.env.DRUPAL_NIGHTWATCH_OUTPUT}/screenshots`,
72       },
73       end_session_on_fail: false,
74     },
75   },
76 };