End-to-end tests #44
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: End-to-end tests | |
on: | |
push: | |
branches: | |
- main | |
paths-ignore: | |
- '**.md' | |
workflow_dispatch: | |
inputs: | |
debug_enabled: | |
type: boolean | |
description: Debug with tmate | |
default: false | |
permissions: | |
contents: read | |
env: | |
# Allow ddev get to use a GitHub token to prevent rate limiting by tests | |
DDEV_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
jobs: | |
end-to-end-test-suite: | |
strategy: | |
fail-fast: false | |
matrix: | |
# Last 2 patches for the current minor, and last one for the previous minor, greatest php version | |
include: | |
- m2-version: '2.3.7-p4' | |
php-version: '7.4' | |
- m2-version: '2.4.5' | |
php-version: '8.1' | |
- m2-version: '2.4.6' | |
php-version: '8.2' | |
name: End-to-end test suite | |
if: ${{ !contains(github.event.head_commit.message, 'chore(') }} | |
runs-on: ubuntu-latest | |
env: | |
EXTENSION_PACKAGE_NAME: "okaeli/magento2-category-code" | |
EXTENSION_NAME: "Okaeli_CategoryCode" | |
EXTENSION_PATH: "category-code" | |
steps: | |
- name: Install Magento 2 | |
id: magento_install | |
uses: julienloizelet/magento2-ddev-installation@v2.1.1 | |
with: | |
php_version: ${{ matrix.php-version }} | |
magento_version: ${{ matrix.m2-version }} | |
composer_auth: ${{ secrets.M2_COMPOSER_AUTH }} | |
magento_repository: "https://repo.magento.com/" | |
- name: Add playwright to DDEV | |
run: ddev get julienloizelet/ddev-playwright | |
- name: Clone M2 ${{ env.EXTENSION_NAME }} files | |
uses: actions/checkout@v3 | |
with: | |
path: my-own-modules/${{ env.EXTENSION_PATH }} | |
- name: DDEV start | |
run: ddev start | |
- name: Validate composer.json | |
run: ddev composer validate --working-dir ./my-own-modules/${{ env.EXTENSION_PATH }} | |
- name: Prepare composer repositories | |
run: | | |
ddev composer config --unset repositories.0 | |
ddev composer config repositories.0 '{"type": "path", "url":"my-own-modules/${{ env.EXTENSION_PATH }}/", "canonical": true}' | |
ddev composer config repositories.1 '{"type": "composer", "url":"https://repo.magento.com/", "exclude": ["${{ env.EXTENSION_PACKAGE_NAME }}"]}' | |
cat composer.json | |
- name: Add ${{ env.EXTENSION_NAME }} as composer dependency | |
run: | | |
ddev composer require ${{ env.EXTENSION_PACKAGE_NAME }}:@dev --no-interaction | |
- name: Disable some extensions for 2.4.6 | |
if: startsWith(matrix.m2-version, '2.4.6') | |
run: ddev magento module:disable Magento_AdminAdobeImsTwoFactorAuth | |
- name: Disable some extensions for 2.4 | |
if: startsWith(matrix.m2-version, '2.4') | |
run: | | |
ddev magento module:disable Magento_TwoFactorAuth | |
ddev magento module:disable Magento_AdminNotification | |
- name: Make some workaround for some M2 versions | |
if: contains(fromJson('["2.3.7"]'),matrix.m2-version) | |
run: | | |
ddev magento module:disable Dotdigitalgroup_Chat | |
ddev magento module:disable Dotdigitalgroup_Email | |
- name: Enable extension | |
run: | | |
ddev magento deploy:mode:set developer | |
ddev magento module:enable ${{ env.EXTENSION_NAME }} | |
ddev magento setup:upgrade | |
ddev magento setup:static-content:deploy -f | |
ddev magento cache:flush | |
- name: Prepare for playwright test | |
run: | | |
# Copy the test layout | |
cd my-own-modules/${{ env.EXTENSION_PATH }} | |
mkdir -p view/frontend/layout | |
cp Test/EndToEnd/layout-update-test-file/catalog_category_code_test_code_1.xml.dist view/frontend/layout/catalog_category_code_test_code_1.xml | |
# Override the Playwright test folder | |
echo -e "services:\n playwright:\n environment:\n - PLAYWRIGHT_TEST_DIR=my-own-modules/${{ env.EXTENSION_PATH }}/Test/EndToEnd" > .ddev/docker-compose.override.yaml | |
ddev restart | |
# Add some fixture data | |
ddev magento setup:performance:generate-fixtures setup/performance-toolkit/profiles/ce/small.xml | |
# Set base url in Playwright config | |
sed -i 's|CHANGE_BASE_URL|${{ steps.magento_install.outputs.m2_url }}|g' my-own-modules/${{ env.EXTENSION_PATH }}/Test/EndToEnd/.env.example | |
# Install Playwright | |
ddev playwright-install | |
ddev magento cache:flush | |
- name: Run category page test | |
run: ddev playwright test category.test | |
- name: Keep Playwright report | |
uses: actions/upload-artifact@v3 | |
if: always() | |
with: | |
name: playwright-report-${{ matrix.php-version }}-${{ matrix.m2-version }} | |
path: my-own-modules/${{ env.EXTENSION_PATH }}/Test/EndToEnd/playwright-report/ | |
retention-days: 10 | |
- name: Debug with tmate | |
uses: mxschmitt/action-tmate@v3 | |
with: | |
limit-access-to-actor: true | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
timeout-minutes: 30 | |
if: failure() && github.event.inputs.debug_enabled == 'true' |