Skip to content

Commit 87bc930

Browse files
committed
ci: add Playwright test job to PR workflow
1 parent f66ffce commit 87bc930

1 file changed

Lines changed: 112 additions & 1 deletion

File tree

.github/workflows/dotnet-core-pr.yml

Lines changed: 112 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,4 +167,115 @@ jobs:
167167
- name: Build
168168
run: dotnet build eFormAPI/Plugins/ItemsPlanning.Pn/ItemsPlanning.Pn.sln
169169
- name: Unit Tests
170-
run: dotnet test --no-restore -c Release -v n eFormAPI/Plugins/ItemsPlanning.Pn/ItemsPlanning.Pn.Test/ItemsPlanning.Pn.Test.csproj
170+
run: dotnet test --no-restore -c Release -v n eFormAPI/Plugins/ItemsPlanning.Pn/ItemsPlanning.Pn.Test/ItemsPlanning.Pn.Test.csproj
171+
items-planning-playwright-test:
172+
needs: build
173+
runs-on: ubuntu-22.04
174+
strategy:
175+
fail-fast: false
176+
matrix:
177+
test: [a,b,c]
178+
steps:
179+
- uses: actions/checkout@v3
180+
with:
181+
path: main
182+
- uses: actions/download-artifact@v4
183+
with:
184+
name: items-planning-container
185+
- run: docker load -i items-planning-container.tar
186+
- name: Create docker network
187+
run: docker network create --driver bridge --attachable data
188+
- name: Start MariaDB
189+
run: |
190+
docker pull mariadb:10.8
191+
docker run --name mariadbtest --network data -e MYSQL_ROOT_PASSWORD=secretpassword -p 3306:3306 -d mariadb:10.8
192+
- name: Start rabbitmq
193+
run: |
194+
docker pull rabbitmq:latest
195+
docker run -d --hostname my-rabbit --name some-rabbit --network data -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password rabbitmq:latest
196+
- name: Sleep 15
197+
run: sleep 15
198+
- name: Start the newly build Docker container
199+
id: docker-run
200+
run: docker run --name my-container -p 4200:5000 --network data microtingas/frontend-container:latest "/ConnectionString=host=mariadbtest;Database=420_Angular;user=root;password=secretpassword;port=3306;Convert Zero Datetime = true;SslMode=none;" > docker_run_log 2>&1 &
201+
- name: Use Node.ts
202+
uses: actions/setup-node@v3
203+
with:
204+
node-version: 22
205+
- name: 'Preparing Frontend checkout'
206+
uses: actions/checkout@v3
207+
with:
208+
repository: microting/eform-angular-frontend
209+
ref: stable
210+
path: eform-angular-frontend
211+
- name: Copy dependencies
212+
run: |
213+
cp -av main/eform-client/src/app/plugins/modules/items-planning-pn eform-angular-frontend/eform-client/src/app/plugins/modules/items-planning-pn
214+
mkdir -p eform-angular-frontend/eform-client/playwright/e2e/plugins/
215+
cp -av main/eform-client/playwright/e2e/plugins/items-planning-pn eform-angular-frontend/eform-client/playwright/e2e/plugins/items-planning-pn
216+
cp -av main/eform-client/playwright.config.ts eform-angular-frontend/eform-client/playwright.config.ts
217+
mkdir -p eform-angular-frontend/eform-client/cypress/e2e/plugins/
218+
cp -av main/eform-client/cypress/e2e/plugins/items-planning-pn eform-angular-frontend/eform-client/cypress/e2e/plugins/items-planning-pn
219+
cp -av main/eform-client/e2e/Assets eform-angular-frontend/eform-client/e2e/
220+
cd eform-angular-frontend/eform-client && ../../main/testinginstallpn.sh
221+
- name: yarn install
222+
run: cd eform-angular-frontend/eform-client && yarn install
223+
- name: Install Playwright browsers
224+
run: cd eform-angular-frontend/eform-client && npx playwright install --with-deps chromium
225+
- name: Pretest changes to work with Docker container
226+
run: sed -i 's/localhost/mariadbtest/g' eform-angular-frontend/eform-client/e2e/Constants/DatabaseConfigurationConstants.ts
227+
- name: DB Configuration
228+
uses: cypress-io/github-action@v4
229+
with:
230+
start: echo 'hi'
231+
wait-on: "http://localhost:4200"
232+
wait-on-timeout: 120
233+
browser: chrome
234+
record: false
235+
spec: cypress/e2e/db/*
236+
config-file: cypress.config.ts
237+
working-directory: eform-angular-frontend/eform-client
238+
command-prefix: "--"
239+
- name: Load DB dump
240+
if: matrix.test == 'a'
241+
run: |
242+
docker exec -i mariadbtest mysql -u root --password=secretpassword -e 'update 420_Angular.EformPlugins set Status = 1'
243+
docker exec -i mariadbtest mysql -u root --password=secretpassword -e 'drop database `420_SDK`'
244+
docker exec -i mariadbtest mysql -u root --password=secretpassword -e 'create database `420_SDK`'
245+
docker exec -i mariadbtest mysql -u root --password=secretpassword 420_SDK < eform-angular-frontend/eform-client/cypress/e2e/plugins/items-planning-pn/a/420_sdk.sql
246+
- name: Change rabbitmq hostname
247+
if: ${{ matrix.test != 'a' }}
248+
run: docker exec -i mariadbtest mysql -u root --password=secretpassword -e 'update 420_SDK.Settings set Value = "my-rabbit" where Name = "rabbitMqHost"'
249+
- name: Enable plugins
250+
if: ${{ matrix.test != 'a' }}
251+
run: |
252+
docker exec -i mariadbtest mysql -u root --password=secretpassword -e 'update 420_Angular.EformPlugins set Status = 2'
253+
docker restart my-container
254+
sleep 15
255+
- name: Get standard output
256+
run: |
257+
docker logs my-container
258+
docker ps -a
259+
- name: Wait for app
260+
run: npx wait-on http://localhost:4200 --timeout 120000
261+
- name: Run Playwright test
262+
run: |
263+
cd eform-angular-frontend/eform-client
264+
npx playwright test playwright/e2e/plugins/items-planning-pn/${{matrix.test}}/
265+
- name: Stop the newly build Docker container
266+
run: docker stop my-container
267+
- name: Get standard output
268+
run: |
269+
docker logs my-container
270+
docker ps -a
271+
- name: The job has failed
272+
if: ${{ failure() }}
273+
run: |
274+
cat docker_run_log
275+
- name: Archive Playwright report
276+
if: ${{ failure() }}
277+
uses: actions/upload-artifact@v4
278+
with:
279+
name: playwright-report-${{matrix.test}}
280+
path: eform-angular-frontend/eform-client/playwright-report/
281+
retention-days: 2

0 commit comments

Comments
 (0)