Skip to content

Integration tests

Integration tests #4

Workflow file for this run

name: Integration tests
on:
merge_group:
pull_request:
workflow_dispatch:
inputs:
nightly:
default: ""
workflow_call:
inputs:
nightly:
type: string
default: ""
jobs:
fail:
runs-on: ubuntu-24.04
steps:
- name: Fail
shell: bash
run: |
exit 1
# acceptance:
# runs-on: ubuntu-24.04
# strategy:
# fail-fast: false
# matrix:
# name:
# - 'Platform'
# - 'Install'
# major:
# - ''
# php-version:
# - '8.2'
# include:
# - name: 'Platform'
# major: 'major'
# env:
# SHOPWARE_HTTP_CACHE_ENABLED: 0
# SHOPWARE_DISABLE_UPDATE_CHECK: "true"
# BLUE_GREEN_DEPLOYMENT: 1
# COMPOSER_ROOT_VERSION: 6.6.9999999-dev
# MAILER_DSN: "smtp://localhost:1025"
# MAILPIT_BASE_URL: "http://localhost:8025"
# services:
# database:
# image: mysql:8.0
# env:
# MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
# MYSQL_DATABASE: shopware
# ports:
# - "3306:3306"
# options: --health-cmd="mysqladmin ping"
# redis: # Redis is required since cache rework
# image: ${{ matrix.major == 'major' && 'redis:alpine' || '' }}
# ports:
# - "6379:6379"
# mailpit:
# image: axllent/mailpit
# ports:
# - "1025:1025"
# - "8025:8025"
# steps:
# - name: Define environment for major testing
# shell: bash
# if: ${{ matrix.major == 'major' }}
# run: |
# echo "Workflow Ref: ${{ github.workflow_ref }}"
# echo "V6_7_0_0=1" >> $GITHUB_ENV
# echo "FEATURE_ALL=major" >> $GITHUB_ENV
# echo "DISABLE_VUE_COMPAT=0" >> $GITHUB_ENV
# echo "REDIS_URL=redis://localhost:6379" >> $GITHUB_ENV
# echo "ADMIN_VITE=1" >> $GITHUB_ENV
# - name: Setup Shopware
# uses: shopware/setup-shopware@main
# with:
# mysql-version: 'skip'
# shopware-version: ${{ github.ref }}
# shopware-repository: ${{ github.repository }}
# install: ${{ matrix.name != 'Install' }} # When testing the installation routine of Shopware, don't execute the installation automatically
# install-admin: ${{ matrix.name != 'Install' }}
# install-storefront: ${{ matrix.name != 'Install' }}
# env: prod
# composer-root-version: ${{ matrix.major == 'major' && '6.7.9999999-dev' || '.auto' }}
# - name: Build js
# if: ${{ matrix.name == 'Install' }}
# run: |
# mkdir -p config/jwt
# composer run build:js:admin
# composer npm:storefront run production # we cannot use build:js because it requires a db
# (cd src/Storefront/Resources/app/storefront && node copy-to-vendor.js)
# - name: Start Webserver
# if: ${{ matrix.name == 'Install' }}
# shell: bash
# working-directory: ${{ inputs.path }}
# env:
# SYMFONY_DAEMON: "1"
# SYMFONY_NO_TLS: "1"
# SYMFONY_ALLOW_HTTP: "1"
# SYMFONY_PORT: "8000"
# SYMFONY_ALLOW_ALL_IP: "1"
# run: symfony server:start
# - uses: actions/setup-node@v4
# with:
# node-version: 20
# - name: Install dependencies
# working-directory: tests/acceptance
# run: npm ci
# - name: Install Playwright Browsers
# working-directory: tests/acceptance
# run: npx playwright install --with-deps chromium
# - name: Run your tests with reporting
# if: ${{ contains(github.workflow_ref, 'nightly') }}
# working-directory: tests/acceptance
# run: |-
# npx pwc \
# --ci-build-id "${{ format('{0}-{1}-{2}', github.repository, github.run_id, github.run_attempt) }}${{ matrix.major }}" \
# --project-id ${{ secrets.CURRENTS_PROJECT_ID }} \
# --key ${{ secrets.CURRENTS_RECORD_KEY }} \
# -- --project ${{ matrix.name }} --trace=on
# - name: Run your tests
# if: ${{ !contains(github.workflow_ref, 'nightly') }}
# working-directory: tests/acceptance
# run: npx playwright test --project=${{ matrix.name }} ${{ matrix.name == 'Install' && '--trace=on' || '' }}
# - uses: actions/upload-artifact@v4
# if: always()
# with:
# name: playwright-report-${{ matrix.name }}${{ matrix.major == 'major' && '-major' || '' }}
# path: tests/acceptance/test-results/
# retention-days: 3
# phpunit-matrix:
# runs-on: ubuntu-24.04
# outputs:
# matrix: ${{ steps.generate-matrix.outputs.matrix }}
# steps:
# - name: Checkout
# uses: actions/checkout@v4
# - id: generate-matrix
# run: |
# MATRIX=$(php .github/bin/generate-phpunit-matrix.php "${{ inputs.nightly }}")
# echo $MATRIX
# echo "matrix<<EOF" >> $GITHUB_OUTPUT
# echo "$MATRIX" >> $GITHUB_OUTPUT
# echo 'EOF' >> $GITHUB_OUTPUT
# phpunit:
# name: "${{ matrix.php}} ${{ matrix.test.testsuite }}${{ matrix.test.path }} ${{ matrix.db }}"
# needs:
# - phpunit-matrix
# runs-on: ubuntu-24.04
# strategy: ${{ fromJson(needs.phpunit-matrix.outputs.matrix) }}
# env:
# APP_ENV: test
# DATABASE_URL: mysql://[email protected]:3306/root
# APP_URL: http://localhost:8000
# APP_SECRET: def00000bb5acb32b54ff8ee130270586eec0e878f7337dc7a837acc31d3ff00f93a56b595448b4b29664847dd51991b3314ff65aeeeb761a133b0ec0e070433bff08e48
# OPENSEARCH_URL: 127.0.0.1:9200
# BLUE_GREEN_DEPLOYMENT: 1
# PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: "true"
# COMPOSER_ROOT_VERSION: 6.6.9999999-dev
# services:
# elasticsearch:
# image: ${{ matrix.test.path != '' && 'opensearchproject/opensearch:1' || 'alpine' }}
# env:
# discovery.type: single-node
# plugins.security.disabled: "true"
# ports:
# - "9200:9200"
# database:
# image: ${{ matrix.db }}
# env:
# MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
# MYSQL_DATABASE: shopware
# ports:
# - "3306:3306"
# options: --health-cmd="mysqladmin ping || mariadb-admin ping"
# steps:
# - name: Setup Shopware
# uses: shopware/setup-shopware@main
# with:
# php-version: ${{ matrix.php }}
# mysql-version: 'skip'
# shopware-version: ${{ github.ref }}
# shopware-repository: ${{ github.repository }}
# - name: Start Webserver
# run: symfony server:start -d
# - name: Install Shopware
# run: php src/Core/TestBootstrap.php
# - name: Run PHPUnit testsuite
# if: ${{ matrix.test.testsuite != '' }}
# run: php -d memory_limit=-1 vendor/bin/phpunit --testsuite "${{ matrix.test.testsuite }}"
# - name: Run PHPUnit path
# if: ${{ matrix.test.path != '' }}
# run: php -d memory_limit=-1 vendor/bin/phpunit -- tests/integration/${{ matrix.test.path }}
# win-checkout:
# runs-on: windows-latest
# name: "Windows check"
# steps:
# - name: Support longpaths
# run: git config --system core.longpaths true
# - name: Clone platform
# uses: actions/checkout@v4
# php-security:
# runs-on: ubuntu-24.04
# name: "Composer dependencies"
# env:
# COMPOSER_ROOT_VERSION: 6.6.9999999-dev
# steps:
# - name: Clone platform
# uses: actions/checkout@v4
# - name: Setup PHP
# uses: shivammathur/setup-php@v2
# with:
# php-version: "8.2"
# - name: Install Composer
# run: |
# composer install --no-interaction --no-scripts
# curl --location --output local-php-security-checker https://github.com/fabpot/local-php-security-checker/releases/download/v1.0.0/local-php-security-checker_1.0.0_linux_amd64
# echo 'e5b12488ca78bc07c149e9352278bf10667b88a8461caac10154f9a6f5476369 local-php-security-checker' > local-php-security-checker.sha256
# sha256sum --check local-php-security-checker.sha256
# chmod +x local-php-security-checker
# - name: Run on platform
# run: ./local-php-security-checker
# code-ql:
# name: Analyze
# runs-on: ubuntu-24.04
# strategy:
# fail-fast: false
# matrix:
# language: ["javascript"]
# steps:
# - name: Checkout repository
# uses: actions/checkout@v4
# with:
# fetch-depth: 2
# - name: Initialize CodeQL
# uses: github/codeql-action/init@v3
# with:
# languages: ${{ matrix.language }}
# - name: Autobuild
# uses: github/codeql-action/autobuild@v3
# - name: Perform CodeQL Analysis
# uses: github/codeql-action/analyze@v3
# docker:
# runs-on: ubuntu-24.04
# if: ${{ github.repository == 'shopware/shopware' && (github.event_name == 'workflow_dispatch' || github.event_name == 'push') }}
# permissions:
# packages: write
# env:
# SHOPWARE_ADMIN_SKIP_SOURCEMAP_GENERATION: "1"
# COMPOSER_ROOT_VERSION: 6.6.9999999-dev
# steps:
# - name: Setup Shopware
# uses: shopware/setup-shopware@main
# with:
# shopware-version: ${{ github.ref }}
# shopware-repository: ${{ github.repository }}
# install: true
# install-admin: true
# install-storefront: true
# env: prod
# - name: Build
# run: |
# composer run build:js
# - name: Ignore node_modules folders
# run: |
# echo '**/node_modules' >> .dockerignore
# - name: Set up Docker Buildx
# uses: docker/setup-buildx-action@v3
# - name: Login into Github Docker Registery
# run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
# - name: Build and push
# uses: docker/build-push-action@v5
# if: ${{ !github.ref_protected }}
# with:
# context: .
# push: true
# tags: ghcr.io/${{ github.repository }}/ci-e2e:${{ github.run_id }}
# file: .gitlab/docker/dev/Dockerfile
# - name: Build and push trunk
# uses: docker/build-push-action@v5
# if: ${{ github.ref_protected }}
# with:
# context: .
# push: true
# tags: ghcr.io/${{ github.repository }}/ci-e2e:${{ github.run_id }},ghcr.io/${{ github.repository }}/ci-e2e:${{ github.ref_name }}
# file: .gitlab/docker/dev/Dockerfile
# tested-update-versions:
# name: tested-versions
# runs-on: ubuntu-24.04
# outputs:
# first-version: ${{ steps.versions.outputs.first-version }}
# latest-version: ${{ steps.versions.outputs.latest-version }}
# lts-first-version: ${{ steps.versions.outputs.lts-first-version }}
# lts-latest-version: ${{ steps.versions.outputs.lts-latest-version }}
# steps:
# - name: Generate versions
# id: versions
# uses: shopware/github-actions/versions@main
# acceptance-update:
# needs: tested-update-versions
# runs-on: ubuntu-24.04
# strategy:
# fail-fast: false
# matrix:
# update:
# - version: ${{ needs.tested-update-versions.outputs.lts-latest-version }}
# - version: ${{ needs.tested-update-versions.outputs.first-version }}
# - version: ${{ needs.tested-update-versions.outputs.latest-version }}
# env:
# SHOPWARE_HTTP_CACHE_ENABLED: 0
# BLUE_GREEN_DEPLOYMENT: 1
# SHOPWARE_DISABLE_UPDATE_CHECK: "0"
# SHOPWARE_UPDATE_FROM: ${{ matrix.update.version }}
# SW_RECOVERY_NEXT_VERSION: "6.6.9999999.9999999"
# SW_RECOVERY_NEXT_BRANCH: "6.6.9999999.9999999"
# SW_RECOVERY_REPOSITORY: '{"type": "path", "url": "${{ github.workspace }}/new-shopware/src/*", "options": { "symlink": true } }'
# steps:
# - name: Create shopware dirs
# run: mkdir -p old-shopware new-shopware
# - name: Setup new Shopware
# uses: shopware/setup-shopware@main
# env:
# COMPOSER_ROOT_VERSION: 6.6.9999999-dev
# with:
# shopware-version: ${{ github.ref }}
# shopware-repository: ${{ github.repository }}
# install-admin: true
# env: dev
# path: new-shopware
# - name: Build new shopware
# working-directory: new-shopware
# run: |
# composer run npm:storefront ci
# composer run npm:storefront run production
# (cd src/Storefront/Resources/app/storefront && node copy-to-vendor.js)
# composer -d src/Core config version ${SW_RECOVERY_NEXT_VERSION}
# composer -d src/Administration config version ${SW_RECOVERY_NEXT_VERSION}
# composer -d src/Storefront config version ${SW_RECOVERY_NEXT_VERSION}
# composer -d src/Elasticsearch config version ${SW_RECOVERY_NEXT_VERSION}
# - name: Build updater
# working-directory: new-shopware/src/WebInstaller
# run: |
# composer config platform.php 8.2
# composer install
# composer build-phar
# - name: Checkout template
# uses: actions/checkout@v4
# with:
# repository: shopware/production
# path: old-shopware
# - name: Configure project root
# run: |
# echo "PROJECT_ROOT=${{ github.workspace }}/old-shopware" >> "$GITHUB_ENV"
# - name: Require shopware
# working-directory: old-shopware
# run: composer require shopware/core:${{ matrix.update.version }}
# - name: Install
# working-directory: old-shopware
# run: |
# sed -i -e "s/shopware.store.frw: '1'/shopware.store.frw: '0'"/ config/services.yaml
# bin/console system:install --basic-setup --drop-database --create-database
# - name: Copy WebInstaller
# run: cp new-shopware/src/WebInstaller/shopware-installer.phar.php old-shopware/public/shopware-installer.phar.php
# - name: Start web server
# working-directory: old-shopware
# run: symfony server:start -d
# - uses: actions/setup-node@v4
# with:
# node-version: 20
# - name: Install dependencies
# working-directory: new-shopware/tests/acceptance
# run: npm ci
# - name: Install Playwright Browsers
# working-directory: new-shopware/tests/acceptance
# run: npx playwright install --with-deps chromium
# - name: Run update tests with reporting
# if: ${{ contains(github.workflow_ref, 'nightly') }}
# working-directory: new-shopware/tests/acceptance
# run: npx pwc --project-id ${{ secrets.CURRENTS_PROJECT_ID }} --key ${{ secrets.CURRENTS_RECORD_KEY }} -- --project=Update --trace=on
# - name: Run update tests
# if: ${{ !contains(github.workflow_ref, 'nightly') }}
# working-directory: new-shopware/tests/acceptance
# run: npx playwright test --project=Update --trace=on
# - uses: actions/upload-artifact@v4
# if: always()
# with:
# name: playwright-report-update-${{ matrix.update.version }}
# path: new-shopware/tests/acceptance/test-results/
# retention-days: 3
# blue-green-66-67:
# name: "PHP blue green 6.6 -> 6.7 -> 6.6"
# runs-on: ubuntu-24.04
# env:
# APP_ENV: test
# APP_URL: http://localhost:8000
# APP_SECRET: def00000bb5acb32b54ff8ee130270586eec0e878f7337dc7a837acc31d3ff00f93a56b595448b4b29664847dd51991b3314ff65aeeeb761a133b0ec0e070433bff08e48
# OPENSEARCH_URL: 127.0.0.1:9200
# BLUE_GREEN_DEPLOYMENT: 1
# PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: "true"
# services:
# elasticsearch:
# image: "opensearchproject/opensearch:1"
# env:
# discovery.type: single-node
# plugins.security.disabled: "true"
# ports:
# - "9200:9200"
# steps:
# - name: Setup previous major version
# uses: shopware/setup-shopware@main
# with:
# install: "false"
# shopware-version: ${{ github.ref }}
# shopware-repository: ${{ github.repository }}
# - name: Start Webserver
# run: symfony server:start -d
# - name: Install Shopware in previous major version on test DB
# if: ${{ contains(github.workflow_ref, 'nightly') }}
# run: composer init:testdb
# - name: Run next major migrations on test DB
# if: ${{ contains(github.workflow_ref, 'nightly') }}
# run: DATABASE_URL="mysql://[email protected]:3306/shopware_test" bin/console database:migrate --all core.V6_7
# - name: Run integration tests
# if: ${{ contains(github.workflow_ref, 'nightly') }}
# run: php -d memory_limit=-1 vendor/bin/phpunit --testsuite "integration" --exclude-group=needsWebserver,skip-paratest,not-deterministic --stop-on-error --stop-on-failure
# - name: Install Shopware in previous major version
# if: ${{ !contains(github.workflow_ref, 'nightly') }}
# run: bin/console system:install --basic-setup --create-database --skip-assets-install
# - name: Run next major migrations
# if: ${{ !contains(github.workflow_ref, 'nightly') }}
# run: bin/console database:migrate --all core.V6_7
# - name: Run blue-green check
# if: ${{ !contains(github.workflow_ref, 'nightly') }}
# run: php .gitlab/bin/blue-green-check.php # TODO: Move script to .github after migration
# this allows us to specifiy just one required job/check
# this is not practical with matrix jobs directly, because you've to specify all permutations
check:
if: always()
needs:
# - acceptance
# - phpunit
# - win-checkout
# - code-ql
# - acceptance-update
# - blue-green-66-67
- fail
runs-on: Ubuntu-latest
steps:
- if: github.event_name == 'pull_request'
name: Always succeed on PR
run: exit 0
- if: github.event_name != 'pull_request'
name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
# allowed-failures: docs, linters
# allowed-skips: non-voting-flaky-job
jobs: ${{ toJSON(needs) }}