@@ -4,6 +4,8 @@ on: ['push', 'pull_request']
44jobs :
55 playwright :
66 runs-on : ubuntu-latest
7+ container :
8+ image : yireo/magento2playwright:2.4.8-p3
79
810 env :
911 GIT_DEPTH : 1
@@ -79,83 +81,41 @@ jobs:
7981 echo COMPOSER_NAME=`jq '.name' composer.json -r` >> $GITHUB_ENV
8082 echo MAGENTO_MODULE=`jq '.module_name' MODULE.json -r` >> $GITHUB_ENV
8183
82- - name : Setup Magento in Docker
84+ - name : Setup Magento
8385 if : env.SKIP_JOB != 'true'
8486 run : |
85- docker run --rm \
86- --network host \
87- -v "$GITHUB_WORKSPACE:/workspace" \
88- -w /workspace \
89- -e MAGENTO_BASE_URL="${MAGENTO_BASE_URL}" \
90- -e MAGENTO_BACKEND_FRONTNAME="${MAGENTO_BACKEND_FRONTNAME}" \
91- -e MAGENTO_ADMIN_FIRSTNAME="${MAGENTO_ADMIN_FIRSTNAME}" \
92- -e MAGENTO_ADMIN_LASTNAME="${MAGENTO_ADMIN_LASTNAME}" \
93- -e MAGENTO_ADMIN_EMAIL="${MAGENTO_ADMIN_EMAIL}" \
94- -e MAGENTO_ADMIN_USER="${MAGENTO_ADMIN_USER}" \
95- -e MAGENTO_ADMIN_PASSWORD="${MAGENTO_ADMIN_PASSWORD}" \
96- -e MAGENTO_LANGUAGE="${MAGENTO_LANGUAGE}" \
97- -e MAGENTO_CURRENCY="${MAGENTO_CURRENCY}" \
98- -e MAGENTO_TIMEZONE="${MAGENTO_TIMEZONE}" \
99- -e MAGENTO_USE_REWRITES="${MAGENTO_USE_REWRITES}" \
100- -e MAGENTO_SEARCH_ENGINE="${MAGENTO_SEARCH_ENGINE}" \
101- -e COMPOSER_ALLOW_SUPERUSER="${COMPOSER_ALLOW_SUPERUSER}" \
102- -e COMPOSER_MEMORY_LIMIT="${COMPOSER_MEMORY_LIMIT}" \
103- -e MYSQL_HOST="${MYSQL_HOST}" \
104- -e MYSQL_USER="${MYSQL_USER}" \
105- -e MYSQL_PASSWORD="${MYSQL_PASSWORD}" \
106- -e MYSQL_DATABASE="${MYSQL_DATABASE}" \
107- -e MYSQL_ROOT_PASSWORD="${MYSQL_ROOT_PASSWORD}" \
108- -e MYSQL_PORT="${MYSQL_PORT}" \
109- -e OPENSEARCH_HOST="${OPENSEARCH_HOST}" \
110- -e OPENSEARCH_PORT="${OPENSEARCH_PORT}" \
111- -e MAGENTO_VERSION="${MAGENTO_VERSION}" \
112- -e GITLAB_TOKEN="${GITLAB_TOKEN}" \
113- -e COMPOSER_NAME="${COMPOSER_NAME}" \
114- -e MAGENTO_MODULE="${MAGENTO_MODULE}" \
115- yireo/magento2playwright:2.4.8-p3 \
116- sh -c '
117- set -e
118-
119- # Create Magento in /tmp first (fast on tmpfs)
120- cd /tmp/magento
121-
122- if [ -n "${GITLAB_TOKEN}" ]; then
123- composer config gitlab-domains gitlab.yireo.com
124- composer config --global --auth http-basic.gitlab.yireo.com yireo "${GITLAB_TOKEN}"
125- composer config repositories.loki-third-party composer https://gitlab.yireo.com/api/v4/group/loki-third-party/-/packages/composer/packages.json
126- composer config repositories.loki-checkout composer https://gitlab.yireo.com/api/v4/group/loki-checkout/-/packages/composer/packages.json
127- fi
128-
129- # Run version-specific composer scripts if they exist
130- test -f "/workspace/.github/workflows/composer-additional.sh" && source "/workspace/.github/workflows/composer-additional.sh"
131- test -f "/workspace/.github/workflows/composer-${MAGENTO_VERSION}.sh" && source "/workspace/.github/workflows/composer-${MAGENTO_VERSION}.sh"
132-
133- # Add local module and dependencies
134- composer config repositories.local-source "{\"type\": \"path\", \"url\": \"/workspace\", \"options\": {\"symlink\": false}}"
135- composer require --prefer-source -- "${COMPOSER_NAME}:@dev" loki-checkout/magento2-core-cli:@dev loki-checkout/magento2-functional-tests:@dev yireo/magento2-enable-module-sequence
136-
137- # Install Magento
138- /workspace/.github/workflows/magento-install.sh
87+ cd /tmp/magento
88+
89+ if [ -n "${GITLAB_TOKEN}" ]; then
90+ composer config gitlab-domains gitlab.yireo.com
91+ composer config --global --auth http-basic.gitlab.yireo.com yireo "${GITLAB_TOKEN}"
92+ composer config repositories.loki-third-party composer https://gitlab.yireo.com/api/v4/group/loki-third-party/-/packages/composer/packages.json
93+ composer config repositories.loki-checkout composer https://gitlab.yireo.com/api/v4/group/loki-checkout/-/packages/composer/packages.json
94+ fi
95+
96+ test -f "$GITHUB_WORKSPACE/.github/workflows/composer-additional.sh" && source "$GITHUB_WORKSPACE/.github/workflows/composer-additional.sh"
97+ test -f "$GITHUB_WORKSPACE/.github/workflows/composer-${MAGENTO_VERSION}.sh" && source "$GITHUB_WORKSPACE/.github/workflows/composer-${MAGENTO_VERSION}.sh"
98+
99+ composer config repositories.local-source "{\"type\": \"path\", \"url\": \"$GITHUB_WORKSPACE\", \"options\": {\"symlink\": false}}"
100+ composer require --prefer-source -- "${COMPOSER_NAME}:@dev" loki-checkout/magento2-core-cli:@dev loki-checkout/magento2-functional-tests:@dev yireo/magento2-enable-module-sequence
139101
140- # Configure Magento
141- bin/magento deploy:mode:set developer
142- bin/magento module:enable Yireo_EnableModuleSequence
143- bin/magento module:sequence LokiCheckout_FunctionalTests
144- bin/magento module:sequence LokiCheckout_CoreCli
145- bin/magento module:sequence "${MAGENTO_MODULE}"
146- bin/magento setup:upgrade
147- bin/magento loki-checkout:modules:dump
102+ $GITHUB_WORKSPACE/.github/workflows/magento-install.sh
103+
104+ bin/magento deploy:mode:set developer
105+ bin/magento module:enable Yireo_EnableModuleSequence
106+ bin/magento module:sequence LokiCheckout_FunctionalTests
107+ bin/magento module:sequence LokiCheckout_CoreCli
108+ bin/magento module:sequence "${MAGENTO_MODULE}"
109+ bin/magento setup:upgrade
110+ bin/magento loki-checkout:modules:dump
148111
149- # Set test token
150- magerun2 config:store:set loki_functional_tests/general/token loki -n
112+ magerun2 config:store:set loki_functional_tests/general/token loki -n
151113
152- # Copy to workspace (this is mounted from host, so it persists)
153- echo "Copying Magento to workspace..."
154- cp -R /tmp/magento/* /workspace /magento/
114+ echo "Copying Magento to workspace..."
115+ mkdir -p $GITHUB_WORKSPACE/magento/
116+ cp -R /tmp/magento/* $GITHUB_WORKSPACE /magento/
155117
156- echo "Magento setup complete"
157- ls -la /workspace/magento/
158- '
118+ echo "Magento setup complete"
159119
160120 - name : Verify Magento installation
161121 if : env.SKIP_JOB != 'true'
@@ -172,39 +132,21 @@ jobs:
172132 echo "GITHUB_WORKSPACE: $GITHUB_WORKSPACE"
173133 echo "MAGENTO_MODULE: $MAGENTO_MODULE"
174134
175- # Run Playwright in its own container
176- docker run --rm \
177- --network host \
178- --ipc=host \
179- -v "$GITHUB_WORKSPACE:/work" \
180- -w /work \
181- -e MAGENTO_MODULE="${MAGENTO_MODULE}" \
182- mcr.microsoft.com/playwright:v1.59.1-noble \
183- bash -lc '
184- set -e
185-
186- echo "Playwright container started"
187- echo "Checking /work directory..."
188- ls -la /work/
189-
190- if [ ! -d "/work/magento" ]; then
191- echo "ERROR: /work/magento directory not found"
192- exit 1
193- fi
135+ if [ ! -d "$GITHUB_WORKSPACE/magento" ]; then
136+ echo "ERROR: magento directory not found"
137+ exit 1
138+ fi
194139
195- echo "Magento directory found, contents: "
196- ls -la /work/magento /
140+ echo "Navigating to Playwright test directory... "
141+ cd $GITHUB_WORKSPACE/magento/vendor/loki-checkout/magento2-functional-tests/Test/Playwright /
197142
198- echo "Navigating to Playwright test directory..."
199- cd /work/magento/vendor/loki-checkout/magento2-functional-tests/Test/Playwright/
200-
201- echo "Installing npm dependencies..."
202- npm install
203-
204- echo "Creating .env file..."
205- printf "TEST_URL=http://127.0.0.1:8888\nTEST_TOKEN=loki\n" > .env
206- cat .env
143+ echo "Installing npm dependencies..."
144+ npm install
145+ npx playwright install chromium
146+
147+ echo "Creating .env file..."
148+ printf "TEST_URL=http://127.0.0.1:8888\nTEST_TOKEN=loki\n" > .env
149+ cat .env
207150
208- echo "Running Playwright tests for project: ${MAGENTO_MODULE}"
209- MAGENTO_ROOT=/work/magento npx playwright test --project=${MAGENTO_MODULE}
210- '
151+ echo "Running Playwright tests for project: ${MAGENTO_MODULE}"
152+ MAGENTO_ROOT=$GITWORK_WORKSPACE/magento npx playwright test --project=${MAGENTO_MODULE}
0 commit comments