@@ -4,8 +4,7 @@ on: ['push', 'pull_request']
44jobs :
55 playwright :
66 runs-on : ubuntu-latest
7- container :
8- image : yireo/magento2playwright:2.4.8-p3
7+
98 env :
109 GIT_DEPTH : 1
1110 GIT_STRATEGY : fetch
3433 OPENSEARCH_JAVA_OPTS : " -Xms128m -Xmx128m"
3534 OPENSEARCH_INITIAL_ADMIN_PASSWORD : " admin"
3635 MAGENTO_VERSION : " 2.4.8-p3"
37-
3836 GITLAB_TOKEN : ${{ secrets.GITLAB_TOKEN }}
3937
4038 services :
4543 MYSQL_USER : magento2
4644 MYSQL_PASSWORD : magento2
4745 MYSQL_ROOT_PASSWORD : root
46+ options : >-
47+ --health-cmd="mysqladmin ping"
48+ --health-interval=10s
49+ --health-timeout=5s
50+ --health-retries=3
4851
4952 redis :
5053 image : redis:latest
54+ options : >-
55+ --health-cmd="redis-cli ping"
56+ --health-interval=10s
57+ --health-timeout=5s
58+ --health-retries=3
5159
5260 opensearch :
5361 image : yireo/opensearch
@@ -71,64 +79,132 @@ jobs:
7179 echo COMPOSER_NAME=`jq '.name' composer.json -r` >> $GITHUB_ENV
7280 echo MAGENTO_MODULE=`jq '.module_name' MODULE.json -r` >> $GITHUB_ENV
7381
74- - name : Configure Yireo GitLab
82+ - name : Setup Magento in Docker
7583 if : env.SKIP_JOB != 'true'
7684 run : |
77- test -n "${{ secrets.GITLAB_TOKEN }}" || exit 0
78- cd /tmp/magento
79- composer config gitlab-domains gitlab.yireo.com
80- composer config --global --auth http-basic.gitlab.yireo.com yireo "${GITLAB_TOKEN}"
81- composer config repositories.loki-third-party composer https://gitlab.yireo.com/api/v4/group/loki-third-party/-/packages/composer/packages.json
82- composer config repositories.loki-checkout composer https://gitlab.yireo.com/api/v4/group/loki-checkout/-/packages/composer/packages.json
83-
84- - name : Prepare Magento Playwright setup
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
139+
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
148+
149+ # Set test token
150+ magerun2 config:store:set loki_functional_tests/general/token loki -n
151+
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/
155+
156+ echo "Magento setup complete"
157+ ls -la /workspace/magento/
158+ '
159+
160+ - name : Verify Magento installation
85161 if : env.SKIP_JOB != 'true'
86162 run : |
87- cd /tmp/magento
88- git config --global --add safe.directory /__w/Loki_Components/Loki_Components
89-
90- test -f "$GITHUB_WORKSPACE/.github/workflows/composer-additional.sh" && source "$GITHUB_WORKSPACE/.github/workflows/composer-additional.sh"
91- test -f "$GITHUB_WORKSPACE/.github/workflows/composer-${MAGENTO_VERSION}.sh" && source "$GITHUB_WORKSPACE/.github/workflows/composer-${MAGENTO_VERSION}.sh"
92-
93- composer config repositories.local-source "{\"type\": \"path\", \"url\": \"$GITHUB_WORKSPACE\", \"options\": {\"symlink\": false}}"
94- composer require --prefer-source -- "${COMPOSER_NAME}:@dev" loki-checkout/magento2-core-cli:@dev loki-checkout/magento2-functional-tests:@dev yireo/magento2-enable-module-sequence
163+ echo "Verifying Magento installation in workspace..."
164+ ls -la $GITHUB_WORKSPACE/magento/
165+ test -f $GITHUB_WORKSPACE/magento/bin/magento || (echo "ERROR: Magento installation verification failed" && exit 1)
166+ echo "Magento installation verified successfully"
95167
96- $GITHUB_WORKSPACE/.github/workflows/magento-install.sh
97-
98- bin/magento deploy:mode:set developer
99- bin/magento module:enable Yireo_EnableModuleSequence
100- bin/magento module:sequence LokiCheckout_FunctionalTests
101- bin/magento module:sequence LokiCheckout_CoreCli
102- bin/magento module:sequence "${MAGENTO_MODULE}"
103- bin/magento setup:upgrade
104- bin/magento loki-checkout:modules:dump
105-
106- magerun2 config:store:set loki_functional_tests/general/token loki -n
107- cp -R /tmp/magento $GITHUB_WORKSPACE/
108-
109- - name : Prepare Magento Playwright setup
168+ - name : Run Playwright tests
110169 if : env.SKIP_JOB != 'true'
111170 run : |
112- docker run --rm --network host --ipc=host -v "$GITHUB_WORKSPACE:/work" -w /work \
113- mcr.microsoft.com/playwright:v1.59.1-noble bash -lc '
114- ls -al /work
115- cd /work/magento/vendor/loki-checkout/magento2-functional-tests/Test/Playwright/
116- npm install
117- printf "TEST_URL=http://127.0.0.1:8888\nTEST_TOKEN=loki\n" > .env
118- MAGENTO_ROOT=/work/magento npx playwright test --project=$MAGENTO_MODULE
119- '
120-
121- # - name: Prepare Magento Playwright setup
122- # if: env.SKIP_JOB != 'true'
123- # uses: docker://mcr.microsoft.com/playwright:v1.59.1-noble
124- # with:
125- # args: >
126- # bash -lc "
127- # cd $GITHUB_WORKSPACE/magento/vendor/loki-checkout/magento2-functional-tests/Test/Playwright/
128- # cat $GITHUB_WORKSPACE/magento/app/etc/loki-checkout.json
129- # npm install
130- # #npx playwright install
131- # echo TEST_URL=http://localhost:8888 >> .env
132- # echo TEST_TOKEN=loki >> .env
133- # MAGENTO_ROOT=$GITHUB_WORKSPACE/magento npx playwright test --project=$MAGENTO_MODULE
134- # "
171+ echo "Starting Playwright tests..."
172+ echo "GITHUB_WORKSPACE: $GITHUB_WORKSPACE"
173+ echo "MAGENTO_MODULE: $MAGENTO_MODULE"
174+
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
194+
195+ echo "Magento directory found, contents:"
196+ ls -la /work/magento/
197+
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
207+
208+ echo "Running Playwright tests for project: ${MAGENTO_MODULE}"
209+ MAGENTO_ROOT=/work/magento npx playwright test --project=${MAGENTO_MODULE}
210+ '
0 commit comments