mattermost-desktop/.github/workflows/e2e-performance.yml
Pantelis Vratsalis 2bb622c314
PoC performance tests in CI (#2474)
* PoC performance tests in CI

* Add a naive measurement

* Change in spec descriptions

* More minimal reporter and 2 tests: 1 failing, 1 succeeding

* Fix circleci config

* Fix circleci part 2

* Make performance tests a workflow

* add npm install in performance tests

* change executor

* Experimenting: Install crossenv

* Experimenting

* More experimenting

* Revert some changes

* Run update_image and cache node modules

* Sandbox e2e tests run

* fix code residual from rebase

* Add GH action for ci perf

* Use ubuntu instead of macos

* Use windows instead of ubuntu

* Fix env set command

* Use post-test script to check performance

* Use macos-latest

* Throw error when tests fail

* Use measudePerformance function instead

* Use measudePerformance function instead

* Try to run e2e on github actions

* Try headless script

* Install linux packages

* Add shell

* Use if: runner..

* ADd sudo

* Add more linux packages

* Go back to macos

* Try recursive find for main window

* Remove performance tests from circleCi

* Increase retries

* Fix

* Revert "Fix"

This reverts commit c19fc56600ada4eee3e26bf3988b27d2ce2616d1.

* Revert "Increase retries"

This reverts commit 564ac95c34def892595c17b98eec245cacb0d4a4.

* Revert "Remove performance tests from circleCi"

This reverts commit c49c73b6f811df12631036bc33dae30da2271173.

* Revert "Try recursive find for main window"

This reverts commit 19d9367f9317f6e9d7ef9aa6a5d69eccdff2df67.

* Revert "Go back to macos"

This reverts commit 72b796ad983e89940f84d53039affd867d0e7f34.

* Revert "Add more linux packages"

This reverts commit 4bd510f8ea5356c13fbc4722be874aeea32de43e.

* Revert "ADd sudo"

This reverts commit acb95e02609e7cc02b12863910d29c03694936c1.

* Revert "Use if: runner.."

This reverts commit 69beed6fe24e452b1d7f0b0e4578bbfa9ca36d2f.

* Revert "Add shell"

This reverts commit e1743664a8b01797da4112314af0b88318ad2fd7.

* Revert "Install linux packages"

This reverts commit 25195dd11c827dff0fd8cf4fbdf2dc709377d525.

* Revert "Try headless script"

This reverts commit 385be5609d5ee45363d26828f6a14c6be0ef661a.

* Revert "Try to run e2e on github actions"

This reverts commit be8f682fd8a82b265403471b5106fd5107f9fecb.

* Revert "Use measudePerformance function instead"

This reverts commit bfd46768ae845e2839e9f124735922da6301fa4e.

* Revert "Use measudePerformance function instead"

This reverts commit ab4bc22b8689ff35260b4ab55724a77dc5993426.

* Update workflow command

* Remove circleci config for perf tests

* Run on ubuntu

* Add packages for linux

* Fix order of commands

* Move env var at the beginning

* Upload test results to s3

* Update name

* Update name

* Add trigger for flag

* Add step to upload artifact to github workflow artifacts

* Update yml

* Add step to comment the results in the PR

* Fix env bug

* move constant to workflow env

* Wrap workflow env with single quotes

* Add start comment and remove label steps

* Update body of comment

* Remove unused file

* Move PR comment function into file

* Fix import

* Remove spaces from line start

* Remove label even if workflow failed

* Add logging

* Fix markdown table data

* Remove trailing semi string

---------

Co-authored-by: Tasos Boulis <tboulis@hotmail.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
2023-01-30 17:16:10 +02:00

94 lines
2.9 KiB
YAML

name: E2E Performance Tests (Desktop)
on:
pull_request:
branches: [ master ]
types:
- labeled
env:
RESULTS_PATH: e2e/performance/perf-test-report.json
jobs:
build:
if: ${{ github.event.label.name == 'Run E2E Performance Tests' }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
node-version: [16]
steps:
- name: Add start comment
uses: actions/github-script@v6
with:
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `E2E Performance Tests started 🏎️`,
});
- name: Set env variable for timestamp
run: echo "NOW=$(date +'%Y-%m-%dT%H:%M:%S')" >> $GITHUB_ENV
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- name: Install packages
run: sudo apt-get install libxtst-dev libpng++-dev
- name: Install dependencies 👨🏻‍💻
run: npm ci
- name: E2E Performance Tests for Electron 🧪
run: ELECTRON_DISABLE_SANDBOX=1 xvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" -- npm run test:e2e:performance
- name: Upload artifact to Github
uses: actions/upload-artifact@v3
with:
name: perf-test-report.json
path: ${{ env.RESULTS_PATH }}
if-no-files-found: error
retention-days: 14
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_PERFORMANCE_TESTS_PUT_BUCKET }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY_PERFORMANCE_TESTS_PUT_BUCKET }}
aws-region: ${{ secrets.AWS_REGION_PERFORMANCE_TESTS_PUT_BUCKET }}
mask-aws-account-id: true
- name: Upload report to S3
run: aws s3 cp ${{ env.RESULTS_PATH }} s3://${{ secrets.AWS_BUCKET_PERFORMANCE_TESTS }}/${{ github.head_ref }}-${{ github.sha }}-${{ env.NOW }}.json
- name: Add results in PR comment
uses: actions/github-script@v6
with:
script: |
const fs = require('fs');
const {generateCommentBody} = require('./e2e/utils/pr-e2e-durations-report.js');
const fileContents = fs.readFileSync('${{ env.RESULTS_PATH }}');
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: generateCommentBody(fileContents),
});
- name: Remove "Run E2E Performance Tests" label
if: always()
uses: actions-ecosystem/action-remove-labels@v1
with:
labels: |
Run E2E Performance Tests