Update to reference playwright template
This commit is contained in:
parent
9903503c64
commit
5dfaf0afb6
1 changed files with 13 additions and 170 deletions
|
|
@ -28,17 +28,11 @@ resources:
|
|||
type: github
|
||||
name: Safelite/AzureDevOps
|
||||
endpoint: Safelite
|
||||
ref: refs/tags/t5.5.40
|
||||
ref: refs/tags/t5.7.40
|
||||
|
||||
variables:
|
||||
- group: Digital-Infrastructure
|
||||
- group: ISS-BuildBranches
|
||||
- name: dockerImageName
|
||||
value: 'playwright-tests'
|
||||
- name: imageTag
|
||||
value: '$(Build.BuildId)'
|
||||
- name: totalShards
|
||||
value: 2
|
||||
- name: IS_REGRESSION
|
||||
value: 'false'
|
||||
|
||||
|
|
@ -54,170 +48,19 @@ stages:
|
|||
npmLocation: $(Build.SourcesDirectory)
|
||||
testResultsFile: junit.xml
|
||||
summaryFileLocation: $(Build.SourcesDirectory)/coverage/cobertura-coverage.xml
|
||||
- job: playwright_tests
|
||||
continueOnError: true
|
||||
strategy:
|
||||
matrix:
|
||||
shard1:
|
||||
shardNumber: 1
|
||||
shard2:
|
||||
shardNumber: 2
|
||||
# shard3:
|
||||
# shardNumber: 3
|
||||
# shard4:
|
||||
# shardNumber: 4
|
||||
|
||||
steps:
|
||||
- task: Docker@2
|
||||
displayName: 'Build Docker Image'
|
||||
inputs:
|
||||
command: build
|
||||
dockerfile: Dockerfile.playwright
|
||||
repository: $(dockerImageName)
|
||||
tags: $(imageTag)
|
||||
arguments: '--no-cache --pull'
|
||||
|
||||
- script: |
|
||||
branch_name=$(System.PullRequest.SourceBranch)
|
||||
echo "Retrieved branch name: '$branch_name'"
|
||||
JIRA_CARD_NUMBER="${branch_name##*/}"
|
||||
echo "Extracted JIRA Card number: '$JIRA_CARD_NUMBER'"
|
||||
# Create container and run tests
|
||||
container_id=$(docker create \
|
||||
--ipc=host \
|
||||
-e CCIS_API_AUTH=$(CCIS_API_AUTH) \
|
||||
-e BASE_URL=$(BASE_URL) \
|
||||
-e CCIS_API_URL=$(CCIS_API_URL) \
|
||||
-e ADMIN_SERVICE_API_URL=$(ADMIN_SERVICE_API_URL) \
|
||||
-e SHARD=$(shardNumber) \
|
||||
-e CI=true \
|
||||
-e ENABLE_MOCK_TESTING=true \
|
||||
-e ENABLE_ACCESSIBILITY_TESTING=true \
|
||||
-e NODE_ENV=$(NODE_ENV) \
|
||||
$(dockerImageName):$(imageTag) \
|
||||
npx concurrently -k -n "server,playwright"\
|
||||
"sed -i \"s|^process\.env\.VUE_APP_CONSUMER_CF_DISTRO = .*|process\.env\.VUE_APP_CONSUMER_CF_DISTRO='https://digitalapi.test.safelite.io'|\" \"./vue.config.js\" && echo \"Updated config file to use TEST APIs\" && npm run serve -- --port=8080"\
|
||||
"npx wait-on http://localhost:8080 && npm run test:playwright -- --shard=$(shardNumber)/$(totalShards) --reporter=list,blob --grep \"@$JIRA_CARD_NUMBER\"")
|
||||
|
||||
# Start container and stream logs
|
||||
echo "Starting tests for shard $(shardNumber)..."
|
||||
docker start -a $container_id
|
||||
|
||||
# Create directory for test results
|
||||
echo "Creating test results directory..."
|
||||
mkdir -p $(System.DefaultWorkingDirectory)/blob-reports/shard-$(shardNumber)
|
||||
|
||||
# Copy test results from container
|
||||
echo "Copying test results..."
|
||||
docker cp $container_id:/app/blob-report/. $(System.DefaultWorkingDirectory)/blob-reports/shard-$(shardNumber)/
|
||||
|
||||
# Remove container
|
||||
echo "Cleaning up container..."
|
||||
docker rm $container_id
|
||||
|
||||
# Check if tests failed
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Tests failed in shard $(shardNumber) or tests don't exist for this shard number!"
|
||||
exit 0 # Suppress error. It will be visible in report.
|
||||
fi
|
||||
displayName: 'Run Playwright Tests - Shard $(shardNumber)'
|
||||
|
||||
- task: PublishPipelineArtifact@1
|
||||
displayName: 'Publish Test Reports - Shard $(shardNumber)'
|
||||
condition: always()
|
||||
inputs:
|
||||
targetPath: '$(System.DefaultWorkingDirectory)/blob-reports/shard-$(shardNumber)'
|
||||
artifact: 'playwright-report-shard-$(shardNumber)'
|
||||
publishLocation: 'pipeline'
|
||||
|
||||
- script: |
|
||||
docker rmi $(dockerImageName):$(imageTag) -f
|
||||
displayName: 'Cleanup Docker Image'
|
||||
condition: always()
|
||||
|
||||
- job: download_and_merge_reports
|
||||
dependsOn: playwright_tests
|
||||
timeoutInMinutes: 10
|
||||
cancelTimeoutInMinutes: 10
|
||||
steps:
|
||||
- task: DownloadPipelineArtifact@2
|
||||
inputs:
|
||||
targetPath: '$(System.DefaultWorkingDirectory)/playwright-reports'
|
||||
- task: Docker@2
|
||||
displayName: 'Build Docker Image'
|
||||
inputs:
|
||||
command: build
|
||||
dockerfile: Dockerfile.playwright
|
||||
repository: $(dockerImageName)
|
||||
tags: $(imageTag)
|
||||
arguments: '--no-cache --pull'
|
||||
- bash: |
|
||||
branch_name=$(System.PullRequest.SourceBranch)
|
||||
echo "Retrieved branch name: '$branch_name'"
|
||||
JIRA_CARD_NUMBER="${branch_name##*/}"
|
||||
echo "Extracted JIRA Card number: '$JIRA_CARD_NUMBER'"
|
||||
# Create container for jira writeback
|
||||
container_id=$(docker create \
|
||||
--ipc=host \
|
||||
-e JIRA_SERVER=$(JIRA_SERVER) \
|
||||
-e JIRA_USERNAME=$(JIRA_USERNAME) \
|
||||
-e JIRA_API_KEY=$(JIRA_API_KEY) \
|
||||
-e IS_REGRESSION=$(IS_REGRESSION) \
|
||||
-e JIRA_CARD_NUMBER="$JIRA_CARD_NUMBER" \
|
||||
$(dockerImageName):$(imageTag) \
|
||||
bash -c "echo \"Moving Playwright reports out of subfolders...\" &&
|
||||
find ./playwright-reports/ -mindepth 2 -type f -exec mv {} ./playwright-reports/ \; &&
|
||||
echo \"Merging reports...\" &&
|
||||
export NODE_OPTIONS=--max_old_space_size=4096
|
||||
PLAYWRIGHT_JUNIT_OUTPUT_DIR='/app/test-results' PLAYWRIGHT_JUNIT_OUTPUT_NAME='junit_results.xml' npx playwright merge-reports --reporter=junit,\"/app/playwright-tests/impl/reporter/JiraWritebackReporter.ts\" ./playwright-reports
|
||||
echo \"Contents of ortoni-report:\" && ls ./ortoni-report &&
|
||||
echo 'Current dir: ' && pwd
|
||||
echo 'Contents of current dir: ' && ls
|
||||
echo 'Contents of /app/test-results' && ls /app/test-results ")
|
||||
|
||||
# Start container and stream logs
|
||||
echo "Starting merge"
|
||||
docker start -a $container_id
|
||||
|
||||
# Create directory for test results
|
||||
echo "Creating test results directory..."
|
||||
mkdir -p $(System.DefaultWorkingDirectory)/ortoni-report
|
||||
mkdir -p $(System.DefaultWorkingDirectory)/test-results
|
||||
|
||||
# Copy test results from container
|
||||
echo "Copying test results..."
|
||||
docker cp $container_id:/app/ortoni-report/. $(System.DefaultWorkingDirectory)/ortoni-report
|
||||
docker cp $container_id:/app/test-results/junit_results.xml $(System.DefaultWorkingDirectory)/test-results
|
||||
|
||||
# Remove container
|
||||
echo "Cleaning up container..."
|
||||
docker rm $container_id
|
||||
env:
|
||||
- template: templates/digital/playwright-test.yml@AzureDevOps
|
||||
parameters:
|
||||
applicationType: 'vue'
|
||||
totalShards: 2
|
||||
targetUrl: $(BASE_URL)
|
||||
dockerFileName: 'Dockerfile.playwright'
|
||||
isRegression: false
|
||||
filterTags: ''
|
||||
playwrightTestsPath: 'playwright-tests'
|
||||
npmServePath: '.'
|
||||
npmrcPath: 'playwright-tests/.npmrc'
|
||||
secrets:
|
||||
JIRA_API_KEY: $(JIRA_API_KEY)
|
||||
displayName: merge_and_publish_results_to_jira
|
||||
|
||||
- task: PublishTestResults@2
|
||||
displayName: 'Publish test results'
|
||||
inputs:
|
||||
searchFolder: 'test-results'
|
||||
testResultsFormat: 'JUnit'
|
||||
testResultsFiles: 'junit_results.xml'
|
||||
mergeTestResults: true
|
||||
failTaskOnFailedTests: false
|
||||
testRunTitle: 'Playwright Tests'
|
||||
condition: succeededOrFailed()
|
||||
|
||||
- task: PublishPipelineArtifact@1
|
||||
displayName: 'Publish Merged Report'
|
||||
condition: always()
|
||||
inputs:
|
||||
targetPath: '$(System.DefaultWorkingDirectory)/ortoni-report'
|
||||
artifact: 'playwright-merged-report'
|
||||
publishLocation: 'pipeline'
|
||||
- script: |
|
||||
docker rmi $(dockerImageName):$(imageTag) -f
|
||||
displayName: 'Cleanup Docker Image'
|
||||
condition: always()
|
||||
|
||||
- ${{ else }}:
|
||||
# Dev Build/Deploy
|
||||
|
|
|
|||
Loading…
Reference in a new issue