diff --git a/azure-pipelines.yml b/azure-pipelines.yml index c40e2c36..3d648d3c 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -36,7 +36,7 @@ variables: - name: imageTag value: '$(Build.BuildId)' - name: totalShards - value: 4 + value: 2 stages: # PR's @@ -58,10 +58,10 @@ stages: shardNumber: 1 shard2: shardNumber: 2 - shard3: - shardNumber: 3 - shard4: - shardNumber: 4 + # shard3: + # shardNumber: 3 + # shard4: + # shardNumber: 4 steps: - task: Docker@2 @@ -74,6 +74,10 @@ stages: 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 \ @@ -87,7 +91,7 @@ stages: $(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 \"@smoke | @Advanced\"") + "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)..." @@ -107,8 +111,8 @@ stages: # Check if tests failed if [ $? -ne 0 ]; then - echo "Tests failed in shard $(shardNumber)!" - exit 1 + 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)' @@ -157,11 +161,11 @@ stages: bash -c "echo \"Moving Playwright reports out of subfolders...\" && find ./playwright-reports/ -mindepth 2 -type f -exec mv {} ./playwright-reports/ \; && echo \"Merging reports...\" && - npx playwright merge-reports --reporter=ortoni-report ./playwright-reports + PLAYWRIGHT_JUNIT_OUTPUT_DIR='/app/test-results' PLAYWRIGHT_JUNIT_OUTPUT_NAME='junit_results.xml' npx playwright merge-reports --reporter=ortoni-report,junit ./playwright-reports echo \"Contents of ortoni-report:\" && ls ./ortoni-report && echo 'Current dir: ' && pwd echo 'Contents of current dir: ' && ls - echo 'Contents of /app/devops/scripts' && ls /app/devops/scripts + echo 'Contents of /app/test-results' && ls /app/test-results echo \"Writing report to Jira card '$jira_card_number'...\" && /app/devops/scripts/jira_writeback.sh add_comment \"$jira_card_number\" /app/ortoni-report/ortoni-report.html \"AUTOMATED TEST RUN: $(date)\" ") @@ -172,12 +176,12 @@ stages: # 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) - # TODO: Update to include junit results if necessary + docker cp $container_id:/app/test-results/junit_results.xml $(System.DefaultWorkingDirectory)/test-results # Remove container echo "Cleaning up container..." @@ -186,17 +190,16 @@ stages: JIRA_API_KEY: $(JIRA_API_KEY) displayName: merge_and_publish_results_to_jira - # TODO: Enable later when working on PR gate - # - 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: 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'