Skip to content

ci(*): Update m2 insatll action #42

ci(*): Update m2 insatll action

ci(*): Update m2 insatll action #42

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
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: |
# 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'