116 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			116 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								// cspell:ignore testcases
							 | 
						||
| 
								 | 
							
								const path = require('node:path');
							 | 
						||
| 
								 | 
							
								const { globSync } = require('glob');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Find directories which have Nightwatch tests in them.
							 | 
						||
| 
								 | 
							
								const regex = /(.*\/?tests\/?.*\/Nightwatch)\/.*/g;
							 | 
						||
| 
								 | 
							
								const collectedFolders = {
							 | 
						||
| 
								 | 
							
								  Tests: [],
							 | 
						||
| 
								 | 
							
								  Commands: [],
							 | 
						||
| 
								 | 
							
								  Assertions: [],
							 | 
						||
| 
								 | 
							
								  Pages: [],
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								const searchDirectory = process.env.DRUPAL_NIGHTWATCH_SEARCH_DIRECTORY || '';
							 | 
						||
| 
								 | 
							
								const defaultIgnore = ['vendor/**'];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								globSync('**/tests/**/Nightwatch/**/*.js', {
							 | 
						||
| 
								 | 
							
								  cwd: path.resolve(process.cwd(), `../${searchDirectory}`),
							 | 
						||
| 
								 | 
							
								  follow: true,
							 | 
						||
| 
								 | 
							
								  ignore: process.env.DRUPAL_NIGHTWATCH_IGNORE_DIRECTORIES
							 | 
						||
| 
								 | 
							
								    ? process.env.DRUPAL_NIGHTWATCH_IGNORE_DIRECTORIES.split(',').concat(
							 | 
						||
| 
								 | 
							
								        defaultIgnore,
							 | 
						||
| 
								 | 
							
								      )
							 | 
						||
| 
								 | 
							
								    : defaultIgnore,
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								  .sort()
							 | 
						||
| 
								 | 
							
								  .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: collectedFolders.Pages,
							 | 
						||
| 
								 | 
							
								  globals_path: 'globals.js',
							 | 
						||
| 
								 | 
							
								  selenium: {
							 | 
						||
| 
								 | 
							
								    start_process: false,
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  test_settings: {
							 | 
						||
| 
								 | 
							
								    default: {
							 | 
						||
| 
								 | 
							
								      globals: {
							 | 
						||
| 
								 | 
							
								        defaultTheme: 'olivero',
							 | 
						||
| 
								 | 
							
								        adminTheme: 'claro',
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      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,
							 | 
						||
| 
								 | 
							
								        'goog:chromeOptions': {
							 | 
						||
| 
								 | 
							
								          w3c: !!process.env.DRUPAL_TEST_WEBDRIVER_W3C,
							 | 
						||
| 
								 | 
							
								          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,
							 | 
						||
| 
								 | 
							
								      skip_testcases_on_fail: false,
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								    local: {
							 | 
						||
| 
								 | 
							
								      webdriver: {
							 | 
						||
| 
								 | 
							
								        start_process: process.env.DRUPAL_TEST_CHROMEDRIVER_AUTOSTART,
							 | 
						||
| 
								 | 
							
								        port: process.env.DRUPAL_TEST_WEBDRIVER_PORT,
							 | 
						||
| 
								 | 
							
								        cli_args: process.env.DRUPAL_TEST_WEBDRIVER_CLI_ARGS
							 | 
						||
| 
								 | 
							
								          ? process.env.DRUPAL_TEST_WEBDRIVER_CLI_ARGS.split(' ')
							 | 
						||
| 
								 | 
							
								          : [],
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      desiredCapabilities: {
							 | 
						||
| 
								 | 
							
								        browserName: 'chrome',
							 | 
						||
| 
								 | 
							
								        acceptSslCerts: true,
							 | 
						||
| 
								 | 
							
								        'goog:chromeOptions': {
							 | 
						||
| 
								 | 
							
								          w3c: !!process.env.DRUPAL_TEST_WEBDRIVER_W3C,
							 | 
						||
| 
								 | 
							
								          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,
							 | 
						||
| 
								 | 
							
								      skip_testcases_on_fail: false,
							 | 
						||
| 
								 | 
							
								    },
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								};
							 |