[No QA]Separate e2e test runs#29656
Conversation
# Conflicts: # .github/workflows/e2ePerformanceTests.yml
|
PR description to update |
|
npm has a |
|
Going to push to my own branch as we can't run the tests on a fork. |
…/separate-test-runs
.tool-versions
Outdated
| @@ -0,0 +1 @@ | |||
| nodejs 16.15.1 No newline at end of file | |||
There was a problem hiding this comment.
Why is this required? We have this in package.json
There was a problem hiding this comment.
ah, sorry. I use ASDF to handle per-project environments. That way I don't have to switch installs or use multiple tools (nvm, ruby-env, etc). This is just a file that describes which version is needed.
There was a problem hiding this comment.
Let's remove, we use and recommend nvm: https://github.com/Expensify/App#getting-started
| "symbolicate:android": "npx metro-symbolicate android/app/build/generated/sourcemaps/react/release/index.android.bundle.map", | ||
| "symbolicate:ios": "npx metro-symbolicate main.jsbundle.map", | ||
| "test:e2e": "node tests/e2e/testRunner.js --development", | ||
| "test:e2e:main": "node tests/e2e/testRunner.js --development --branch main --skipCheckout", |
There was a problem hiding this comment.
Why have branch as a param if it's always main?
There was a problem hiding this comment.
Remnant of local testing. Doesn't really matter, doesn't change the behavior of the testing script.
tests/e2e/config.js
Outdated
|
|
||
| // The amount of times a test should be executed for average performance metrics | ||
| RUNS: 90, | ||
| RUNS: 30, |
There was a problem hiding this comment.
Can we try 60 as a middle ground?
tests/e2e/manually_trigger_aws_df.sh
Outdated
|
|
||
| set -ex | ||
|
|
||
| PROJECT_ARN=arn:aws:devicefarm:us-west-2:015174472939:project:741d1dac-84e7-4c6f-84ed-b41a2209319d |
There was a problem hiding this comment.
Assume this was a testing script we want to remove?
tests/e2e/utils/execAsync.js
Outdated
| @@ -1,40 +1,52 @@ | |||
| const {exec} = require('node:child_process'); | |||
| const {exec} = require('child_process'); | |||
| // const _ = require('underscore'); | |||
There was a problem hiding this comment.
Remove line if its no longer needed
tests/e2e/utils/execAsync.js
Outdated
| // if (_.keys(env).length !== 0) { | ||
| // Logger.log(`environment variables:`, JSON.stringify(finalEnv, null, 2)); | ||
| // } |
There was a problem hiding this comment.
| // if (_.keys(env).length !== 0) { | |
| // Logger.log(`environment variables:`, JSON.stringify(finalEnv, null, 2)); | |
| // } |
|
|
||
| - name: Check if test failed, if so post the results and add the DeployBlocker label | ||
| run: | | ||
| if grep -q '🔴' ./Host_Machine_Files/\$WORKING_DIRECTORY/output.md; then |
There was a problem hiding this comment.
Is this directory correct? Or should it just be ./output.md?
There was a problem hiding this comment.
You are right, should be ./output.md
Reviewer Checklist
Screenshots/VideosWebN/A - Tests only Mobile Web - ChromeN/A - Tests only Mobile Web - SafariN/A - Tests only DesktopN/A - Tests only iOSN/A - Tests only AndroidN/A - Tests only |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🚀 Deployed to staging by https://github.com/AndrewGable in version: 1.3.90-0 🚀
|
|
🚀 Deployed to production by https://github.com/marcaaron in version: 1.3.90-2 🚀
|
|
🚀 Deployed to staging by https://github.com/AndrewGable in version: 1.3.91-0 🚀
|
|
🚀 Deployed to production by https://github.com/marcaaron in version: 1.3.91-8 🚀
|
Details
We are attempting to reduce variance on e2e tests by separating the runs of the main (baseline) and any delta branch by queueing two separate AWS Device Farm runs.
Currently e2e have to much variance, reporting performance regressions on innocuous changes. After some testing, it was shown that there is a memory leak somewhere (maybe RN itself? found this issue over the weekend). Therefore running subsequent tests on the same device/session causes a performance regression that has nothing to do with the App code.
This is one alternative where we separate the runs on two AWS DF sessions, each with a brand new rebooted device. With the hope they will decay/regress at the same rate and therefore eliminate some of the variance in case the changes do not have a regression themselves.
Internal discussion here:
https://expensify.slack.com/archives/C05LX9D6E07/p1697185949611829
Fixed Issues
$ #29660
Tests
Offline tests
QA Steps
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)myBool && <MyComponent />.src/languages/*files and using the translation methodWaiting for Copylabel for a copy review on the original GH to get the correct copy.STYLE.md) were followedAvatar, I verified the components usingAvatarare working as expected)/** comment above it */thisproperly so there are no scoping issues (i.e. foronClick={this.submit}the methodthis.submitshould be bound tothisin the constructor)thisare necessary to be bound (i.e. avoidthis.submit = this.submit.bind(this);ifthis.submitis never passed to a component event handler likeonClick)StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))Avataris modified, I verified thatAvataris working as expected in all cases)ScrollViewcomponent to make it scrollable when more elements are added to the page.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari
MacOS: Desktop