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