From db39270539bc6088e3e02370a05874983eec35fa Mon Sep 17 00:00:00 2001 From: Mac Siri Date: Fri, 18 Nov 2022 09:54:11 -0500 Subject: [PATCH] Integrate BuildPulse (#18740) --- .github/workflows/ci-cd.yml | 28 +++++++++++++++++++ .gitignore | 5 ++++ .rspec | 2 ++ Gemfile | 1 + Gemfile.lock | 3 ++ cypress.config.js | 4 +++ jest.config.js | 12 ++++++++ package.json | 1 + vendor/cache/rspec_junit_formatter-0.6.0.gem | Bin 0 -> 14336 bytes yarn.lock | 15 ++++++++++ 10 files changed, 71 insertions(+) create mode 100644 vendor/cache/rspec_junit_formatter-0.6.0.gem diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index 684ee5ebf..44e6f7052 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -60,6 +60,15 @@ jobs: - name: RSpec run: bin/knapsack_pro_rspec - uses: codecov/codecov-action@v3 + - name: Upload test results to BuildPulse for flaky test detection + if: '!cancelled()' # Run this step even when the tests fail. Skip if the workflow is cancelled. + uses: Workshop64/buildpulse-action@master + with: + account: ${{ secrets.BUILDPULSE_ACCOUNT }} + repository: ${{ secrets.BUILDPULSE_REPOSITORY }} + path: spec/reports + key: ${{ secrets.BUILDPULSE_ACCESS_KEY_ID }} + secret: ${{ secrets.BUILDPULSE_SECRET_ACCESS_KEY }} Jest: runs-on: ubuntu-latest @@ -82,6 +91,15 @@ jobs: - run: yarn install --frozen-lockfile - run: yarn lint:frontend - run: yarn test --colors + - name: Upload test results to BuildPulse for flaky test detection + if: '!cancelled()' # Run this step even when the tests fail. Skip if the workflow is cancelled. + uses: Workshop64/buildpulse-action@master + with: + account: ${{ secrets.BUILDPULSE_ACCOUNT }} + repository: ${{ secrets.BUILDPULSE_REPOSITORY }} + path: /junit.xml + key: ${{ secrets.BUILDPULSE_ACCESS_KEY_ID }} + secret: ${{ secrets.BUILDPULSE_SECRET_ACCESS_KEY }} - uses: codecov/codecov-action@v3 - run: yarn build-storybook @@ -188,6 +206,16 @@ jobs: - name: cypress non-seed run: CREATOR_ONBOARDING_SEED_DATA=1 E2E_FOLDER=creatorOnboardingFlows E2E=true bin/rails cypress:run if: ${{ matrix.ci_node_index == 'non-seed' }} + - name: Upload test results to BuildPulse for flaky test detection + if: '!cancelled()' # Run this step even when the tests fail. Skip if the workflow is cancelled. + uses: Workshop64/buildpulse-action@master + with: + account: ${{ secrets.BUILDPULSE_ACCOUNT }} + repository: ${{ secrets.BUILDPULSE_REPOSITORY }} + path: cypress/results + key: ${{ secrets.BUILDPULSE_ACCESS_KEY_ID }} + secret: ${{ secrets.BUILDPULSE_SECRET_ACCESS_KEY }} + CI-status-report: runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index da1c6a2eb..9208a15c9 100644 --- a/.gitignore +++ b/.gitignore @@ -92,6 +92,7 @@ app/javascript/generated_stories/ cypress/videos cypress/screenshots cypress/logs +cypress/results # PostCSS error log postcss_error.log @@ -108,3 +109,7 @@ dump.rdb # generated yarddoc doc/ + +# spec reports +/spec/reports +/junit.xml diff --git a/.rspec b/.rspec index 2559e39fc..922a7a5fb 100644 --- a/.rspec +++ b/.rspec @@ -1,3 +1,5 @@ --color --format progress --require spec_helper +--format RspecJunitFormatter +--out spec/reports/rspec.xml diff --git a/Gemfile b/Gemfile index eb14bba56..4ecc009ad 100644 --- a/Gemfile +++ b/Gemfile @@ -144,6 +144,7 @@ group :development, :test do gem "pry", "~> 0.14" # An IRB alternative and runtime developer console gem "pry-rails", "~> 0.3" # Use Pry as your rails console gem "rspec-rails", "~> 5.1" # rspec-rails is a testing framework for Rails 3+ + gem "rspec_junit_formatter", "~> 0.6" # RSpec formatter for JUnit XML output gem "rswag-specs", "~> 2.5.1" # RSwag - Swagger-based DSL for rspec & accompanying rake task for generating Swagger files gem "rubocop", "~> 1.33", require: false # Automatic Ruby code style checking tool gem "rubocop-performance", "~> 1.14", require: false # A collection of RuboCop cops to check for performance optimizations in Ruby code diff --git a/Gemfile.lock b/Gemfile.lock index d3b2c9eac..a6baaebe9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -734,6 +734,8 @@ GEM rspec-retry (0.6.2) rspec-core (> 3.3) rspec-support (3.11.1) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) rss (0.2.9) rexml rswag-specs (2.5.1) @@ -1064,6 +1066,7 @@ DEPENDENCIES rpush-redis (~> 1.1) rspec-rails (~> 5.1) rspec-retry (~> 0.6) + rspec_junit_formatter (~> 0.6) rss (~> 0.2.9) rswag-specs (~> 2.5.1) rubocop (~> 1.33) diff --git a/cypress.config.js b/cypress.config.js index 33f5e0c82..32238b1d3 100644 --- a/cypress.config.js +++ b/cypress.config.js @@ -10,5 +10,9 @@ module.exports = defineConfig({ trashAssetsBeforeRuns: false, video: false, retries: 3, + reporter: 'junit', + reporterOptions: { + mochaFile: 'cypress/results/results-[hash].xml', + }, }, }); diff --git a/jest.config.js b/jest.config.js index 33fc0e34c..74861528e 100644 --- a/jest.config.js +++ b/jest.config.js @@ -59,4 +59,16 @@ module.exports = { transformIgnorePatterns: [ '/node_modules/(?!(preact|react-colorful|i18n-js)/)', ], + reporters: [ + 'default', + [ + 'jest-junit', + { + addFileAttribute: 'true', + ancestorSeparator: ' › ', + classNameTemplate: '{classname}', + titleTemplate: '{title}', + }, + ], + ], }; diff --git a/package.json b/package.json index be5ce1df8..2732189b8 100644 --- a/package.json +++ b/package.json @@ -127,6 +127,7 @@ "he": "^1.2.0", "i18n-js": "^4.1.1", "intersection-observer": "^0.12.2", + "jest-junit": "^14.0.1", "linkstate": "^2.0.1", "lodash.debounce": "4.0.8", "moment": "^2.29.4", diff --git a/vendor/cache/rspec_junit_formatter-0.6.0.gem b/vendor/cache/rspec_junit_formatter-0.6.0.gem new file mode 100644 index 0000000000000000000000000000000000000000..e128b1caa011b06f9f450c8cd7fbf27c8c7986d8 GIT binary patch literal 14336 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 literal 0 HcmV?d00001 diff --git a/yarn.lock b/yarn.lock index cdb1d3050..db221299b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10411,6 +10411,16 @@ jest-haste-map@^28.1.3: optionalDependencies: fsevents "^2.3.2" +jest-junit@^14.0.1: + version "14.0.1" + resolved "https://registry.yarnpkg.com/jest-junit/-/jest-junit-14.0.1.tgz#5b357d6f5d333459585d628a24cd48b5bbc92ba2" + integrity sha512-h7/wwzPbllgpQhhVcRzRC76/cc89GlazThoV1fDxcALkf26IIlRsu/AcTG64f4nR2WPE3Cbd+i/sVf+NCUHrWQ== + dependencies: + mkdirp "^1.0.4" + strip-ansi "^6.0.1" + uuid "^8.3.2" + xml "^1.0.1" + jest-leak-detector@^28.1.3: version "28.1.3" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz#a6685d9b074be99e3adee816ce84fd30795e654d" @@ -17307,6 +17317,11 @@ xml-name-validator@^4.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== +xml@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" + integrity sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw== + xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"