Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow multiple emails to be added when inviting members to workspace #29044

Merged
merged 6 commits into from
Oct 12, 2023

Conversation

Samueljh1
Copy link
Contributor

@Samueljh1 Samueljh1 commented Oct 7, 2023

Details

Allow multiple emails to be added when inviting members to workspace. Previously, only one email could be added at a time.

Fixed Issues

$ #26242
PROPOSAL: #26242 (comment)

Tests

  1. Log in with any account
  2. Add multiple emails at once as members to a workspace, by using a comma as a delimiter
  3. Observe how all valid emails/numbers appear in the list (and how invalid ones are ignored)
  • Verify that no errors appear in the JS console

Offline tests

  1. Add multiple emails at once as members to a workspace, by using a comma as a delimiter
  2. Observe how all valid emails/numbers appear in the list (and how invalid ones are ignored)

QA Steps

  1. Log in with any account
  2. Add multiple emails at once as members to a workspace, by using a comma as a delimiter
  3. Observe how all valid emails/numbers appear in the list (and how invalid ones are ignored)
  • Verify that no errors appear in the JS console

PR Author Checklist

  • I linked the correct issue in the ### Fixed Issues section above
  • I wrote clear testing steps that cover the changes made in this PR
    • I added steps for local testing in the Tests section
    • I added steps for the expected offline behavior in the Offline steps section
    • I added steps for Staging and/or Production testing in the QA steps section
    • I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
    • I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
    • I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).
  • I included screenshots or videos for tests on all platforms
  • I ran the tests on all platforms & verified they passed on:
    • Android / native
    • Android / Chrome
    • iOS / native
    • iOS / Safari
    • MacOS / Chrome / Safari
    • MacOS / Desktop
  • I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
  • I followed proper code patterns (see Reviewing the code)
    • I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
    • I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
    • I verified that comments were added to code that is not self explanatory
    • I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
    • I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
      • If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:
    • I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
    • I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
    • I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
    • I verified the JSDocs style guidelines (in STYLE.md) were followed
  • If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
  • I followed the guidelines as stated in the Review Guidelines
  • I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
  • I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
  • I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
  • I verified that if a function's arguments changed that all usages have also been updated correctly
  • If a new component is created I verified that:
    • A similar component doesn't exist in the codebase
    • All props are defined accurately and each prop has a /** comment above it */
    • The file is named correctly
    • The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
    • The only data being stored in the state is data necessary for rendering and nothing else
    • If we are not using the full Onyx data that we loaded, I've added the proper selector in order to ensure the component only re-renders when the data it is using changes
    • For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
    • Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
    • All JSX used for rendering exists in the render method
    • The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions
  • If any new file was added I verified that:
    • The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory
  • If a new CSS style is added I verified that:
    • A similar style doesn't already exist
    • The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))
  • If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
  • If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
  • If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
  • If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
  • If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
  • If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
  • I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
proof_web.mov
Mobile Web - Chrome
proof_android_web.mov
Mobile Web - Safari
proof_ios_web.mov
Desktop
proof_desktop.mov
iOS
proof_ios.mov
Android
proof_android.mov

@Samueljh1 Samueljh1 requested a review from a team as a code owner October 7, 2023 00:03
@melvin-bot
Copy link

melvin-bot bot commented Oct 7, 2023

Hey! I see that you made changes to our Form component. Make sure to update the docs in FORMS.md accordingly. Cheers!

@melvin-bot melvin-bot bot requested review from mananjadhav and removed request for a team October 7, 2023 00:03
@melvin-bot
Copy link

melvin-bot bot commented Oct 7, 2023

@mananjadhav Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button]

@Samueljh1 Samueljh1 changed the base branch from staging to main October 7, 2023 00:03
@mananjadhav
Copy link
Collaborator

@Samueljh1 I started testing this but if I have consecutive comma it still won't show the valid emails.

image

Also when I have spaces in between as an invalid email, it will still filter out the correct email.

image

@github-actions
Copy link
Contributor

github-actions bot commented Oct 11, 2023

CLA Assistant Lite bot All contributors have signed the CLA ✍️ ✅

@Samueljh1
Copy link
Contributor Author

I have read the CLA Document and I hereby sign the CLA

@Samueljh1
Copy link
Contributor Author

@Samueljh1 I started testing this but if I have consecutive comma it still won't show the valid emails.

image Also when I have spaces in between as an invalid email, it will still filter out the correct email. image

@mananjadhav Thanks for this. I have added a new commit to make the email parsing more strict.

@melvin-bot melvin-bot bot requested a review from francoisl October 11, 2023 17:33
@mananjadhav
Copy link
Collaborator

mananjadhav commented Oct 11, 2023

Reviewer Checklist

  • I have verified the author checklist is complete (all boxes are checked off).
  • I verified the correct issue is linked in the ### Fixed Issues section above
  • I verified testing steps are clear and they cover the changes made in this PR
    • I verified the steps for local testing are in the Tests section
    • I verified the steps for Staging and/or Production testing are in the QA steps section
    • I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
    • I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
  • I checked that screenshots or videos are included for tests on all platforms
  • I included screenshots or videos for tests on all platforms
  • I verified tests pass on all platforms & I tested again on:
    • Android: Native
    • Android: mWeb Chrome
    • iOS: Native
    • iOS: mWeb Safari
    • MacOS: Chrome / Safari
    • MacOS: Desktop
  • If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
  • I verified proper code patterns were followed (see Reviewing the code)
    • I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
    • I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
    • I verified that comments were added to code that is not self explanatory
    • I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
    • I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
    • I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
    • I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
    • I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
    • I verified the JSDocs style guidelines (in STYLE.md) were followed
  • If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
  • I verified that this PR follows the guidelines as stated in the Review Guidelines
  • I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
  • I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
  • I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
  • If a new component is created I verified that:
    • A similar component doesn't exist in the codebase
    • All props are defined accurately and each prop has a /** comment above it */
    • The file is named correctly
    • The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
    • The only data being stored in the state is data necessary for rendering and nothing else
    • For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
    • Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
    • All JSX used for rendering exists in the render method
    • The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions
  • If any new file was added I verified that:
    • The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory
  • If a new CSS style is added I verified that:
    • A similar style doesn't already exist
    • The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)
  • If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
  • If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
  • If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
  • If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
  • If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
  • If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
  • I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Web
web-multiple-emails.mov
Mobile Web - Chrome
mweb-chrome-multiple-emails.mov
Mobile Web - Safari
mweb-safari-multiple-emails.mov
Desktop
desktop-multiple-emails.mov
iOS
ios-multiple-emails.mov
Android
android-multiple-emails.mov

@mananjadhav
Copy link
Collaborator

Thanks for the patience here @Samueljh1. It was related to Workspace, so needed more time.

@francoisl All yours.

🎀 👀 🎀 C+ reviewed.

@Samueljh1
Copy link
Contributor Author

@francoisl fixed prettier issues, should be good to ship

@Samueljh1
Copy link
Contributor Author

All done @francoisl

src/pages/workspace/WorkspaceInvitePage.js Outdated Show resolved Hide resolved
src/pages/workspace/WorkspaceInvitePage.js Outdated Show resolved Hide resolved
src/pages/workspace/WorkspaceInvitePage.js Outdated Show resolved Hide resolved
src/pages/workspace/WorkspaceInvitePage.js Outdated Show resolved Hide resolved
src/pages/workspace/WorkspaceInvitePage.js Outdated Show resolved Hide resolved
Comment on lines 86 to 90
let emails = searchTerm.replace(/\s,\s/g, ',').split(',');
emails = _.filter(
_.map(emails, (word) => word.trim()),
(email) => email !== '',
);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Simplification suggestion:

  • If we change the regex to search for any number of spaces around the comma (with \s*), then we don't need the trim()
  • We can use _.compact(<values>) to remove falsy values (e.g. '')
Suggested change
let emails = searchTerm.replace(/\s,\s/g, ',').split(',');
emails = _.filter(
_.map(emails, (word) => word.trim()),
(email) => email !== '',
);
const emails = _.compact(searchTerm.replace(/\s*,\s*/g, ',').split(','));
 _.compact("aaa    ,    bbb,   cccc ,  ".replace(/\s*,\s*/g, ',').split(','));
// ['aaa', 'bbb', 'cccc']

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only issue with this is that the leading and trailing spaces will not be removed. E.g. " aaaa,bbbb,ccc "

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will change it to const emails = _.compact(searchTerm.trim().replace(/\s*,\s*/g, ',').split(','));

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah yeah good point, your change works!

src/pages/workspace/WorkspaceInvitePage.js Outdated Show resolved Hide resolved
Use `each` instead of `forEach`
@Samueljh1
Copy link
Contributor Author

@francoisl changes made, let me know if you're happy

@francoisl francoisl merged commit 5606309 into Expensify:main Oct 12, 2023
14 checks passed
@OSBotify
Copy link
Contributor

✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

@github-actions github-actions bot added the DeployBlockerCash This issue or pull request should block deployment label Oct 12, 2023
@github-actions
Copy link
Contributor

Performance Comparison Report 📊

Significant Changes To Duration

Name Duration
App start TTI 1295.172 ms → 1388.184 ms (+93.012 ms, +7.2%) 🔴
App start runJsBundle 889.274 ms → 941.789 ms (+52.515 ms, +5.9%) 🔴
Show details
Name Duration
App start TTI Baseline
Mean: 1295.172 ms
Stdev: 39.285 ms (3.0%)
Runs: 1182.545059000142 1206.854079999961 1213.8945920001715 1221.4885630002245 1230.3151549999602 1235.6087020002306 1237.1829519998282 1242.969947999809 1245.864362000022 1247.4500449998304 1248.3492599995807 1249.764380000066 1250.5624910001643 1251.6967750000767 1256.3001549998298 1257.1290670000017 1257.8990879999474 1260.2701279995963 1260.620333999861 1261.1477600000799 1261.5054669999518 1261.9157830001786 1264.892030000221 1269.9273650003597 1272.1663830000907 1276.4630720000714 1277.8018190003932 1278.426764999982 1280.3671059999615 1280.3754569999874 1280.4191330000758 1283.205314999912 1285.1768069998361 1285.7600060002878 1286.6441989997402 1289.4668119996786 1290.23128500022 1291.6512590004131 1295.212509999983 1296.0717839999124 1297.2696730000898 1297.3976600002497 1298.4936540001072 1301.459370999597 1302.7030139998533 1303.1265700003132 1303.5541279995814 1304.6271399999969 1306.361295999959 1306.3662050003186 1306.988354000263 1307.9283500001766 1308.1305569997057 1308.8020409997553 1310.1406929995865 1310.6854569995776 1312.5337889995426 1313.2022200003266 1314.1280860002153 1314.7029410004616 1315.6073310002685 1316.8064190000296 1317.1872410001233 1317.5241189999506 1318.9361500004306 1319.6194299999624 1320.1936560003087 1320.6263549998403 1320.9900030000135 1321.1011439999565 1323.7413609996438 1324.0813660002314 1327.1283619999886 1329.6476130001247 1330.672438999638 1335.1921800002456 1337.4469969999045 1342.9326759995893 1343.0340209999122 1343.5833740001544 1344.3465949995443 1344.6042769998312 1345.6971249999478 1350.6848129997961 1360.4890160001814 1373.6221550004557 1380.4377110004425 1394.9925840003416

Current
Mean: 1388.184 ms
Stdev: 73.064 ms (5.3%)
Runs: 1200.4647639999166 1240.2383690001443 1251.5267310002819 1262.3629029998556 1268.2700819997117 1270.4514009999111 1278.9882709998637 1280.9693179996684 1281.485925000161 1282.59258600045 1286.8664790000767 1296.811623999849 1297.497054000385 1299.0441290000454 1302.106409999542 1306.627536999993 1314.8139779996127 1316.9968839995563 1333.9892760002986 1335.1498079998419 1338.4242030000314 1341.5587280001491 1343.7695119995624 1344.9787799995393 1346.8817450003698 1349.249344999902 1352.8982570003718 1354.91608200036 1358.5774769997224 1363.0314859999344 1363.5990749998018 1363.8760770000517 1365.1612959997728 1365.3642100002617 1365.9076169999316 1369.119320999831 1374.8957190001383 1376.6723330002278 1378.983935000375 1379.038211000152 1381.604798000306 1386.654365000315 1388.1009020004421 1392.5443500000983 1393.2111740000546 1397.1122179999948 1398.0755920000374 1398.3078260002658 1400.5951570002362 1401.5184030001983 1403.2513370001689 1403.3937269998714 1404.1261839997023 1407.3505859998986 1407.5314170001075 1408.387477999553 1412.2104169996455 1412.5555710000917 1413.1724319998175 1414.1040000002831 1419.9177609998733 1426.1646830001846 1429.901994000189 1432.5946380002424 1433.685236999765 1436.8223719997332 1444.194511000067 1447.0403270004317 1447.3977450001985 1449.7173979999498 1450.8376059997827 1451.7381819998845 1454.3141820002347 1455.4476819997653 1455.7180599998683 1456.764890000224 1463.8384739998728 1465.3761099996045 1466.028583000414 1466.5236700000241 1466.613688999787 1474.2723920000717 1477.8520830003545 1480.764356999658 1489.731451000087 1505.8032240001485 1505.8738759998232 1507.3397420002148 1565.8049299996346 1580.4891429999843
App start runJsBundle Baseline
Mean: 889.274 ms
Stdev: 27.162 ms (3.1%)
Runs: 824 826 829 833 834 841 845 847 848 849 853 859 860 862 864 865 866 872 872 874 876 876 877 877 878 879 880 881 882 882 882 883 883 884 885 887 890 890 890 891 893 895 896 896 897 898 898 898 898 899 899 900 900 900 901 902 903 903 904 904 904 906 906 907 909 909 910 910 910 911 911 912 914 915 919 919 920 920 923 926 936 940 943 959

Current
Mean: 941.789 ms
Stdev: 51.576 ms (5.5%)
Runs: 831 833 843 851 851 853 859 863 866 867 875 879 880 883 890 891 891 892 893 895 898 899 899 900 901 908 910 919 920 921 924 928 928 929 930 931 937 938 939 943 943 946 948 948 948 951 952 954 954 956 957 957 958 959 959 960 960 960 963 964 969 970 970 971 972 973 974 974 975 975 975 976 978 980 988 991 992 996 997 1002 1009 1009 1011 1015 1022 1025 1036 1038 1044 1069

Meaningless Changes To Duration

Show entries
Name Duration
App start nativeLaunch 22.685 ms → 23.856 ms (+1.171 ms, +5.2%)
App start regularAppStart 0.015 ms → 0.016 ms (+0.001 ms, +8.1%)
Open Search Page TTI 642.018 ms → 641.358 ms (-0.660 ms, ±0.0%)
Show details
Name Duration
App start nativeLaunch Baseline
Mean: 22.685 ms
Stdev: 3.407 ms (15.0%)
Runs: 19 19 19 19 19 19 19 19 19 19 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 23 23 23 24 24 24 24 25 25 25 26 26 26 27 28 28 28 28 28 29 29 29 29 30 30 30 31 31 31

Current
Mean: 23.856 ms
Stdev: 3.118 ms (13.1%)
Runs: 20 20 20 20 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 22 22 22 22 22 22 22 22 22 22 22 22 22 22 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 24 24 24 25 25 25 25 25 25 25 26 26 26 26 26 26 27 27 27 27 27 27 28 28 28 29 29 29 30 30 30 30 32 32 32
App start regularAppStart Baseline
Mean: 0.015 ms
Stdev: 0.001 ms (7.1%)
Runs: 0.012940000277012587 0.0131029998883605 0.013508999720215797 0.013508999720215797 0.013508999720215797 0.013549000024795532 0.013549000024795532 0.013549999799579382 0.01355000026524067 0.01355000026524067 0.013711999170482159 0.0138349998742342 0.013875000178813934 0.013875000178813934 0.013915999792516232 0.013996999710798264 0.013997000642120838 0.0139979999512434 0.014119000174105167 0.014200999867171049 0.014200999867171049 0.014201000332832336 0.014240999706089497 0.014241999946534634 0.014282000251114368 0.014322999864816666 0.014322999864816666 0.014323000330477953 0.0143630001693964 0.014364000409841537 0.01444500032812357 0.01448499970138073 0.014566999860107899 0.014649000018835068 0.014689999632537365 0.014770000241696835 0.014771000016480684 0.014771000482141972 0.014810999855399132 0.014892000705003738 0.0148930000141263 0.014932999387383461 0.01497400039806962 0.01501499954611063 0.015096000395715237 0.015137000009417534 0.015217999927699566 0.015258999541401863 0.015339999925345182 0.015421000309288502 0.015421999618411064 0.015461999922990799 0.015461999922990799 0.015463000163435936 0.015583999454975128 0.015584000386297703 0.015584000386297703 0.015584000386297703 0.015584999695420265 0.015625 0.015625 0.015705999918282032 0.015787999145686626 0.0157880000770092 0.015828000381588936 0.015868999995291233 0.015910000074654818 0.015991000458598137 0.016032000072300434 0.01607199991121888 0.016112999990582466 0.016112999990582466 0.016112999990582466 0.016315999440848827 0.016316000372171402 0.016480000223964453 0.01713000051677227 0.017456000205129385 0.0177819998934865 0.017822000198066235

Current
Mean: 0.016 ms
Stdev: 0.001 ms (6.6%)
Runs: 0.014281999319791794 0.014282000251114368 0.014322999864816666 0.01444500032812357 0.014525999315083027 0.014526999555528164 0.014730000868439674 0.014932999387383461 0.014934000559151173 0.014973999932408333 0.01501499954611063 0.015097000636160374 0.015178000554442406 0.015217999927699566 0.015217999927699566 0.015259000472724438 0.015259000472724438 0.015339999459683895 0.015422000549733639 0.015463000163435936 0.015463000163435936 0.01550300046801567 0.01550300046801567 0.01550300046801567 0.015542999841272831 0.015544000081717968 0.015583999454975128 0.015584000386297703 0.015625 0.015625 0.015665000304579735 0.015665999613702297 0.01570700015872717 0.01574699953198433 0.01574699953198433 0.0157880000770092 0.015868999995291233 0.015868999995291233 0.015869999304413795 0.015909000299870968 0.015910000540316105 0.015949999913573265 0.015990999527275562 0.016032000072300434 0.01607200037688017 0.016112999990582466 0.016112999990582466 0.01619499921798706 0.016276000067591667 0.016358000226318836 0.016397999599575996 0.01639800053089857 0.01639800053089857 0.01643799990415573 0.0165200000628829 0.016560000367462635 0.016560999676585197 0.016560999676585197 0.016561000607907772 0.0166830001398921 0.0166830001398921 0.0166830001398921 0.0166830001398921 0.016723000444471836 0.016927000135183334 0.016927000135183334 0.01700899936258793 0.017090000212192535 0.017129999585449696 0.017171000130474567 0.017172000370919704 0.017211999744176865 0.017333999276161194 0.01733400020748377 0.017496999353170395 0.017537000589072704 0.0176189998164773 0.017740000039339066 0.017822000198066235 0.017862999811768532 0.018147999420762062 0.018717000260949135 0.01912400033324957 0.01953200064599514
Open Search Page TTI Baseline
Mean: 642.018 ms
Stdev: 24.503 ms (3.8%)
Runs: 599.3737789997831 600.281413000077 607.1649170005694 607.6490489998832 610.0516769997776 610.603964000009 611.3240969991311 614.3906659996137 615.2206629998982 615.853964000009 616.2069500004873 616.3937590001151 617.342163999565 617.8216150002554 618.3526209993288 619.5610360000283 620.2709959996864 621.8752039996907 622.5690919999033 622.8156739994884 622.9506430001929 623.188152000308 623.2022299999371 624.1268309997395 624.8642170000821 625.3647059993818 626.1896569998935 627.381021999754 628.9803880006075 629.3512369999662 630.1416840003803 630.1507160002366 630.5157470004633 630.9734699996188 631.8417559992522 631.8848470002413 633.0244950000197 633.8959969999269 634.435344000347 634.5313720004633 634.7064209999517 635.0915930001065 635.3835049998015 635.666748999618 638.0089520001784 638.5582689996809 639.6153569994494 639.9304209994152 641.2520349994302 642.5526940003037 642.5797120006755 642.7059739995748 643.5704349996522 643.7121580000967 645.296875 648.0197750004008 648.1207690006122 648.6895349994302 649.0397959994152 649.1111660003662 649.4886469999328 649.7690429994836 653.5830899998546 654.3169759996235 654.7087399996817 655.5546070002019 656.1629640003666 657.2845870004967 657.5406910004094 658.7627369994298 659.43518100027 660.1370449997485 665.2326260004193 666.9825440002605 668.5376389995217 671.4499110002071 671.847453000024 673.0364990001544 674.2178140003234 680.5993659999222 681.5127770006657 682.1957599995658 684.1289059994742 691.9770919997245 695.1264249999076 701.5962729994208 706.3881430001929 712.2791349999607

Current
Mean: 641.358 ms
Stdev: 17.498 ms (2.7%)
Runs: 606.1104740006849 611.7439370006323 612.4240730004385 612.9856770001352 613.9237469993532 615.9455980006605 618.5166020002216 621.4310709992424 622.4591070003808 622.5057380003855 622.6789960004389 622.9079600004479 623.1143810003996 624.2472740001976 624.6112470002845 624.7587900003418 625.6420489996672 626.3790690004826 626.5381670007482 627.4613039996475 628.2923989994451 630.6609709998593 630.7605799995363 630.7902429997921 631.0147299999371 631.6422119997442 633.1054689995944 633.4441729998216 633.5409340001643 633.6765140006319 634.0946049997583 634.5667329998687 635.0763759994879 635.1813969993964 635.2801930001006 635.4759529996663 636.2725430000573 637.3983970005065 637.5032549994066 637.9579259995371 638.2990730004385 638.7843019999564 638.7946779998019 638.9997560000047 639.6434329999611 639.7046720003709 639.8818359998986 639.9962570006028 640.1438809996471 641.4040529998019 641.7985429996625 641.9552419995889 642.0250249998644 643.1969820000231 643.4142660005018 644.7451579999179 644.9480399992317 646.2628589998931 646.4324960000813 646.5083820000291 646.6182460002601 648.0452069994062 648.730835000053 649.6383469998837 649.7290850002319 650.8900970006362 651.7669269992039 652.6541750002652 653.0395910004154 653.8425709996372 655.2251789998263 656.3548590000719 656.8767499998212 658.5163580002263 658.7845459999517 661.6315509993583 664.5566000007093 668.5826010005549 669.2990730004385 669.5263670003042 672.3940019998699 675.5193680003285 675.9562179995701 677.2523609995842 681.3946939995512 682.0500090001151 690.1891689999029

@github-actions
Copy link
Contributor

@Expensify/mobile-deployers 📣 Please look into this performance regression as it's a deploy blocker.

@OSBotify
Copy link
Contributor

🚀 Deployed to production by https://github.com/jasperhuangg in version: 1.3.83-11 🚀

platform result
🤖 android 🤖 skipped 🚫
🖥 desktop 🖥 skipped 🚫
🍎 iOS 🍎 skipped 🚫
🕸 web 🕸 skipped 🚫

1 similar comment
@OSBotify
Copy link
Contributor

🚀 Deployed to production by https://github.com/jasperhuangg in version: 1.3.83-11 🚀

platform result
🤖 android 🤖 skipped 🚫
🖥 desktop 🖥 skipped 🚫
🍎 iOS 🍎 skipped 🚫
🕸 web 🕸 skipped 🚫

@OSBotify
Copy link
Contributor

🚀 Deployed to production by https://github.com/jasperhuangg in version: 1.3.83-11 🚀

platform result
🤖 android 🤖 skipped 🚫
🖥 desktop 🖥 skipped 🚫
🍎 iOS 🍎 skipped 🚫
🕸 web 🕸 skipped 🚫

@OSBotify
Copy link
Contributor

🚀 Deployed to production by https://github.com/jasperhuangg in version: 1.3.83-11 🚀

platform result
🤖 android 🤖 failure ❌
🖥 desktop 🖥 success ✅
🍎 iOS 🍎 failure ❌
🕸 web 🕸 success ✅

@mallenexpensify
Copy link
Contributor

Weird, it looks like this caused a regression, I didn't initially catch it here, via scrolling up from the bottom on this PR, not sure how I would have, @mananjadhav , @Samueljh1 , any idea how I would?
#29435 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
DeployBlockerCash This issue or pull request should block deployment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants