diff --git a/.github/workflows/TestFunctional.yml b/.github/workflows/TestFunctional.yml
new file mode 100644
index 00000000..c42425c7
--- /dev/null
+++ b/.github/workflows/TestFunctional.yml
@@ -0,0 +1,268 @@
+name: Test Functional Tests
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+ types: [opened, synchronize, reopened]
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
+ cancel-in-progress: true
+
+jobs:
+ Build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Create a Drupal project
+ run: composer create-project drupal/recommended-project . --ignore-platform-req=ext-gd
+
+ - uses: actions/checkout@v3
+ with:
+ path: drainpipe
+
+ - name: Setup drainpipe-dev
+ run: mv drainpipe/drainpipe-dev .
+
+ - uses: ./drainpipe/scaffold/github/actions/common/set-env
+
+ - name: Install DDEV
+ uses: ./drainpipe/scaffold/github/actions/common/ddev
+ with:
+ git-name: Drainpipe Bot
+ git-email: no-reply@example.com
+
+ - name: Setup Project
+ run: |
+ ddev config --auto
+ ddev start
+ ddev composer config extra.drupal-scaffold.gitignore true
+ ddev composer config --json extra.drupal-scaffold.allowed-packages '["lullabot/drainpipe-dev", "lullabot/drainpipe"]'
+ ddev composer config --no-plugins allow-plugins.composer/installers true
+ ddev composer config --no-plugins allow-plugins.drupal/core-composer-scaffold true
+ ddev composer config --no-plugins allow-plugins.lullabot/drainpipe true
+ ddev composer config --no-plugins allow-plugins.lullabot/drainpipe-dev true
+ ddev composer config repositories.drainpipe --json '{"type": "path", "url": "drainpipe", "options": {"symlink": false}}'
+ ddev composer config repositories.drainpipe-dev --json '{"type": "path", "url": "drainpipe-dev", "options": {"symlink": false}}'
+ ddev composer config minimum-stability dev
+ ddev composer require "lullabot/drainpipe @dev" --with-all-dependencies
+ ddev composer require "lullabot/drainpipe-dev @dev" --dev --with-all-dependencies
+
+ - name: Setup Nightwatch
+ run: |
+ echo "hooks:" >> .ddev/config.yaml
+ echo " post-start:" >> .ddev/config.yaml
+ echo " - exec: mysql -uroot -proot -hdb -e \"CREATE DATABASE IF NOT EXISTS firefox; GRANT ALL ON firefox.* TO 'db'@'%';\"" >> .ddev/config.yaml
+ echo " - exec: mysql -uroot -proot -hdb -e \"CREATE DATABASE IF NOT EXISTS chrome; GRANT ALL ON chrome.* TO 'db'@'%';\"" >> .ddev/config.yaml
+ ddev config --web-environment="NIGHTWATCH_DRUPAL_URL_FIREFOX=https://drupal_firefox,NIGHTWATCH_DRUPAL_URL_CHROME=https://drupal_chrome"
+ ddev config --additional-hostnames="*.drainpipe"
+
+ - name: Create Artifact
+ run: zip -r /tmp/drainpipe.zip ./
+
+ - name: Upload Artifact
+ uses: actions/upload-artifact@v3
+ with:
+ name: test-functional-build
+ path: /tmp/drainpipe.zip
+
+ Test-NPM:
+ runs-on: ubuntu-latest
+ needs: Build
+ steps:
+ - uses: actions/download-artifact@v3
+ with:
+ name: test-functional-build
+
+ - name: Restore Workspace
+ run: |
+ cd ../
+ mv ${{ github.workspace }}/drainpipe.zip /tmp/drainpipe.zip
+ unzip -o /tmp/drainpipe.zip -d ${{ github.workspace }}
+ cd ${{ github.workspace }}
+
+ - uses: ./drainpipe/scaffold/github/actions/common/set-env
+
+ - name: Install DDEV
+ uses: ./drainpipe/scaffold/github/actions/common/ddev
+ with:
+ git-name: Drainpipe Bot
+ git-email: no-reply@example.com#
+
+ - name: Start DDEV
+ run: ddev start
+
+ - name: Setup Nightwatch
+ run: |
+ ddev npm init -y
+ ddev npm install nightwatch nightwatch-accessibility @lullabot/nightwatch-drupal-commands --save-dev
+
+ - name: Install Drupal
+ run: |
+ ddev drush --yes site:install
+ ddev drush --uri=https://drupal_firefox --yes site:install
+ ddev drush --uri=https://drupal_chrome --yes site:install
+ ddev drush config:export --yes
+
+ - name: Run Functional Tests
+ run: ddev task test:functional
+
+ - name: Upload test artifacts
+ if: ${{ always() }}
+ uses: actions/upload-artifact@v2
+ with:
+ name: test_result
+ path: test_result
+
+ Test-Yarn-Classic:
+ runs-on: ubuntu-latest
+ needs: Build
+ steps:
+ - uses: actions/download-artifact@v3
+ with:
+ name: test-functional-build
+
+ - name: Restore Workspace
+ run: |
+ cd ../
+ mv ${{ github.workspace }}/drainpipe.zip /tmp/drainpipe.zip
+ unzip -o /tmp/drainpipe.zip -d ${{ github.workspace }}
+ cd ${{ github.workspace }}
+
+ - uses: ./drainpipe/scaffold/github/actions/common/set-env
+
+ - name: Install DDEV
+ uses: ./drainpipe/scaffold/github/actions/common/ddev
+ with:
+ git-name: Drainpipe Bot
+ git-email: no-reply@example.com#
+
+ - name: Start DDEV
+ run: ddev start
+
+ - name: Setup Nightwatch
+ run: |
+ ddev yarn set version classic
+ ddev yarn init -y
+ ddev yarn add nightwatch nightwatch-accessibility @lullabot/nightwatch-drupal-commands --dev
+
+ - name: Install Drupal
+ run: |
+ ddev drush --yes site:install
+ ddev drush --uri=https://drupal_firefox --yes site:install
+ ddev drush --uri=https://drupal_chrome --yes site:install
+ ddev drush config:export --yes
+
+ - name: Run Functional Tests
+ run: ddev task test:functional
+
+ - name: Upload test artifacts
+ if: ${{ always() }}
+ uses: actions/upload-artifact@v2
+ with:
+ name: test_result
+ path: test_result
+
+ Test-Yarn-Berry-Node-Linker:
+ runs-on: ubuntu-latest
+ needs: Build
+ steps:
+ - uses: actions/download-artifact@v3
+ with:
+ name: test-functional-build
+
+ - name: Restore Workspace
+ run: |
+ cd ../
+ mv ${{ github.workspace }}/drainpipe.zip /tmp/drainpipe.zip
+ unzip -o /tmp/drainpipe.zip -d ${{ github.workspace }}
+ cd ${{ github.workspace }}
+
+ - uses: ./drainpipe/scaffold/github/actions/common/set-env
+
+ - name: Install DDEV
+ uses: ./drainpipe/scaffold/github/actions/common/ddev
+ with:
+ git-name: Drainpipe Bot
+ git-email: no-reply@example.com#
+
+ - name: Start DDEV
+ run: ddev start
+
+ - name: Setup Nightwatch
+ run: |
+ ddev yarn set version berry
+ ddev yarn init -y
+ yarn config set nodeLinker node-modules
+ ddev yarn add nightwatch nightwatch-accessibility @lullabot/nightwatch-drupal-commands --dev
+
+ - name: Install Drupal
+ run: |
+ ddev drush --yes site:install
+ ddev drush --uri=https://drupal_firefox --yes site:install
+ ddev drush --uri=https://drupal_chrome --yes site:install
+ ddev drush config:export --yes
+
+ - name: Run Functional Tests
+ run: ddev task test:functional
+
+ - name: Upload test artifacts
+ if: ${{ always() }}
+ uses: actions/upload-artifact@v2
+ with:
+ name: test_result
+ path: test_result
+
+ Test-Yarn-Berry:
+ runs-on: ubuntu-latest
+ needs: Build
+ steps:
+ - uses: actions/download-artifact@v3
+ with:
+ name: test-functional-build
+
+ - name: Restore Workspace
+ run: |
+ cd ../
+ mv ${{ github.workspace }}/drainpipe.zip /tmp/drainpipe.zip
+ unzip -o /tmp/drainpipe.zip -d ${{ github.workspace }}
+ cd ${{ github.workspace }}
+
+ - uses: ./drainpipe/scaffold/github/actions/common/set-env
+
+ - name: Install DDEV
+ uses: ./drainpipe/scaffold/github/actions/common/ddev
+ with:
+ git-name: Drainpipe Bot
+ git-email: no-reply@example.com#
+
+ - name: Start DDEV
+ run: ddev start
+
+ - name: Setup Nightwatch
+ run: |
+ ddev yarn set version berry
+ ddev yarn init -y
+ echo "packageExtensions:" >> .yarnrc.yml
+ echo ' "nightwatch@*":' >> .yarnrc.yml
+ echo ' dependencies:' >> .yarnrc.yml
+ echo ' ws: "*"' >> .yarnrc.yml
+ ddev yarn add nightwatch nightwatch-accessibility @lullabot/nightwatch-drupal-commands ws --dev
+ yarn
+
+ - name: Install Drupal
+ run: |
+ ddev drush --yes site:install
+ ddev drush --uri=https://drupal_firefox --yes site:install
+ ddev drush --uri=https://drupal_chrome --yes site:install
+ ddev drush config:export --yes
+
+ - name: Run Functional Tests
+ run: ddev task test:functional
+
+ - name: Upload test artifacts
+ if: ${{ always() }}
+ uses: actions/upload-artifact@v2
+ with:
+ name: test_result
+ path: test_result
diff --git a/.github/workflows/test-phpunit.yml b/.github/workflows/TestPHPUnit.yml
similarity index 100%
rename from .github/workflows/test-phpunit.yml
rename to .github/workflows/TestPHPUnit.yml
diff --git a/drainpipe-dev/config/nightwatch.conf.js b/drainpipe-dev/config/nightwatch.conf.js
index 72592e93..cb214141 100644
--- a/drainpipe-dev/config/nightwatch.conf.js
+++ b/drainpipe-dev/config/nightwatch.conf.js
@@ -6,10 +6,12 @@ try {
drupalCommandsPath = resolveToUnqualified('@lullabot/nightwatch-drupal-commands', __filename).replace(/\/$/, '');
yarn2 = true;
} catch(e) {
- a11yPath = './node_modules/nightwatch-accessibility';
+ a11yPath = './node_modules/nightwatch-accessibility/nightwatch';
drupalCommandsPath = './node_modules/@lullabot/nightwatch-drupal-commands';
}
+const firefoxLaunchUrl = process.env.NIGHTWATCH_DRUPAL_URL_FIREFOX && process.env.NIGHTWATCH_DRUPAL_URL_FIREFOX.length ? process.env.NIGHTWATCH_DRUPAL_URL_FIREFOX.replace(/\/$/, '') : process.env.NIGHTWATCH_DRUPAL_URL;
+const chromeLaunchUrl = process.env.NIGHTWATCH_DRUPAL_URL_CHROME && process.env.NIGHTWATCH_DRUPAL_URL_CHROME.length ? process.env.NIGHTWATCH_DRUPAL_URL_CHROME.replace(/\/$/, '') : process.env.NIGHTWATCH_DRUPAL_URL;
module.exports = {
// An array of folders (excluding subfolders) where your tests are located;
@@ -32,50 +34,33 @@ module.exports = {
webdriver: {},
+ test_workers: {
+ enabled: false
+ },
+
test_settings: {
default: {
filter: '**/*.nightwatch.js',
- "screenshots" : {
- "enabled" : true,
- "on_failure" : true,
- "on_error" : false,
- "path" : "test_result"
- }
- },
- firefox: {
- desiredCapabilities: {
- resolution: "1240x4000",
- browserName: 'firefox',
- acceptInsecureCerts: true,
- alwaysMatch: {
- 'moz:firefoxOptions': {
- args: [
- //'-headless',
- // '-verbose'
- ]
- }
- }
- },
- webdriver: {
- start_process: false,
- host: 'firefox',
- port: 4444,
- cli_args: [
- // very verbose geckodriver logs
- // '-vv'
- ]
- },
- globals: {
- drupalUrl: process.env.NIGHTWATCH_DRUPAL_URL_FIREFOX && process.env.NIGHTWATCH_DRUPAL_URL_FIREFOX.length ? process.env.NIGHTWATCH_DRUPAL_URL_FIREFOX.replace(/\/$/, '') : process.env.NIGHTWATCH_DRUPAL_URL,
+ disable_error_log: false,
+ screenshots: {
+ enabled: false,
+ on_failure: true,
+ on_error: false,
+ path: 'test_result',
},
},
+
chrome: {
+ selenium: {
+ start_process: false,
+ host: 'chrome',
+ port: 4444
+ },
desiredCapabilities: {
- resolution: "1240x4000",
browserName: 'chrome',
+ esolution: "1240x4000",
'goog:chromeOptions': {
- // More info on Chromedriver: https://sites.google.com/a/chromium.org/chromedriver/
- //
+ w3c: true,
args: [
'--no-sandbox',
'--ignore-certificate-errors',
@@ -84,17 +69,33 @@ module.exports = {
]
}
},
- webdriver: {
+ globals: {
+ drupalUrl: chromeLaunchUrl,
+ },
+ launch_url: chromeLaunchUrl,
+ },
+
+ firefox: {
+ selenium: {
start_process: false,
- host: 'chrome',
- port: 4444,
- cli_args: [
- // --verbose
- ]
+ host: 'firefox',
+ port: 4444
+ },
+ desiredCapabilities: {
+ browserName: 'firefox',
+ resolution: "1240x4000",
+ acceptInsecureCerts: true,
+ 'moz:firefoxOptions': {
+ args: [
+ // '-headless',
+ // '-verbose'
+ ]
+ }
},
globals: {
- drupalUrl: process.env.NIGHTWATCH_DRUPAL_URL_CHROME && process.env.NIGHTWATCH_DRUPAL_URL_CHROME.length ? process.env.NIGHTWATCH_DRUPAL_URL_CHROME.replace(/\/$/, '') : process.env.NIGHTWATCH_DRUPAL_URL,
+ drupalUrl: firefoxLaunchUrl,
},
+ launch_url: firefoxLaunchUrl,
},
}
};
diff --git a/drainpipe-dev/scaffold/nightwatch/docker-compose.selenium.yaml b/drainpipe-dev/scaffold/nightwatch/docker-compose.selenium.yaml
index 68d2a63c..093d9171 100644
--- a/drainpipe-dev/scaffold/nightwatch/docker-compose.selenium.yaml
+++ b/drainpipe-dev/scaffold/nightwatch/docker-compose.selenium.yaml
@@ -37,7 +37,7 @@ services:
expose:
- 7901
environment:
- - NO_VNC_PORT=7901
+ - SE_NO_VNC_PORT=7901
- VIRTUAL_HOST=$DDEV_HOSTNAME
- HTTPS_EXPOSE=7901:7901
- HTTP_EXPOSE=7911:7901
diff --git a/scaffold/phpunit-testtraits.xml b/scaffold/phpunit-testtraits.xml
index 4f6163e8..85efdfd8 100644
--- a/scaffold/phpunit-testtraits.xml
+++ b/scaffold/phpunit-testtraits.xml
@@ -26,10 +26,10 @@
-->
-
+
-
+
diff --git a/scaffold/phpunit.xml b/scaffold/phpunit.xml
index 383b5b68..5f3f9d1d 100644
--- a/scaffold/phpunit.xml
+++ b/scaffold/phpunit.xml
@@ -26,7 +26,7 @@
-->
-
+
diff --git a/tasks/test.yml b/tasks/test.yml
index 97f10aba..518243f0 100644
--- a/tasks/test.yml
+++ b/tasks/test.yml
@@ -276,7 +276,7 @@ tasks:
cmds:
- |
if [ -f "package-lock.json" ]; then
- npm run nightwatch --env $NIGHTWATCH_ENV {{.CLI_ARGS}}
+ npx nightwatch --env $NIGHTWATCH_ENV {{.CLI_ARGS}}
elif [ -f "yarn.lock" ]; then
yarn nightwatch --env $NIGHTWATCH_ENV {{.CLI_ARGS}}
else