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

feature!: add maximum character limit to password length #21593

Merged
merged 4 commits into from
Nov 13, 2024

Conversation

seanstrom
Copy link
Member

fixes #21433

Summary

  • This PR attempts to add some extra validation when creating or changing a password in the status mobile app. Now the password will not be allowed to exceed a length of 100 characters.

Platforms

  • Android
  • iOS

Areas that maybe impacted

Functional
  • Onboarding - Create Password
  • Settings - Change Password

Steps to test

  • Open Status mobile app
  • Create a new profile and proceed to the "Create profile password" screen
  • Insert a password into the password input field that exceeds a 100 characters
  • Check to see if password hint shows "Maximum 100 characters"
  • After logging into the app, open the Settings screen
  • Navigate to the "Password" section of settings
  • Press on "Change password"
  • Enter the old password and proceed to the "New Password" screen
  • Insert a password into the password input field that exceeds a 100 characters
  • Check to see if password hint shows "Maximum 100 characters"

Before and after screenshots comparison

After changes

Create Profile Password
Screen.Recording.2024-11-06.at.09.35.51.mov
Change Profile Password
Screen.Recording.2024-11-06.at.09.35.07.mov

status: ready

@seanstrom seanstrom self-assigned this Nov 6, 2024
@seanstrom seanstrom force-pushed the seanstrom/password-max-length branch 4 times, most recently from 9edc2fe to cefd06e Compare November 6, 2024 17:55
@status-im-auto
Copy link
Member

status-im-auto commented Nov 6, 2024

Jenkins Builds

Click to see older builds (22)
Commit #️⃣ Finished (UTC) Duration Platform Result
9edc2fe #4 2024-11-06 17:56:00 ~2 min ios 📄log
e4953a1 #6 2024-11-06 18:00:53 ~3 min ios 📄log
e4953a1 #6 2024-11-06 18:00:58 ~3 min tests 📄log
✔️ e4953a1 #6 2024-11-06 18:05:34 ~7 min android-e2e 🤖apk 📲
✔️ e4953a1 #6 2024-11-06 18:05:47 ~8 min android 🤖apk 📲
817531a #7 2024-11-06 18:37:05 ~3 min ios 📄log
✔️ 817531a #7 2024-11-06 18:38:52 ~4 min tests 📄log
✔️ 817531a #7 2024-11-06 18:41:11 ~7 min android 🤖apk 📲
✔️ 817531a #7 2024-11-06 18:41:52 ~7 min android-e2e 🤖apk 📲
817531a #8 2024-11-07 11:26:18 ~2 min ios 📄log
0660fdf #9 2024-11-07 17:09:48 ~2 min ios 📄log
✔️ 0660fdf #8 2024-11-07 17:11:45 ~4 min tests 📄log
✔️ 0660fdf #8 2024-11-07 17:14:36 ~7 min android-e2e 🤖apk 📲
✔️ 0660fdf #8 2024-11-07 17:15:16 ~7 min android 🤖apk 📲
bfd56ae #10 2024-11-08 17:47:15 ~3 min ios 📄log
✔️ bfd56ae #9 2024-11-08 17:48:22 ~4 min tests 📄log
✔️ bfd56ae #9 2024-11-08 17:51:01 ~7 min android-e2e 🤖apk 📲
✔️ bfd56ae #9 2024-11-08 17:51:36 ~8 min android 🤖apk 📲
✔️ de0b073 #10 2024-11-12 14:33:02 ~4 min tests 📄log
✔️ de0b073 #10 2024-11-12 14:35:22 ~7 min android-e2e 🤖apk 📲
✔️ de0b073 #10 2024-11-12 14:35:42 ~7 min android 🤖apk 📲
✔️ de0b073 #11 2024-11-12 14:38:07 ~9 min ios 📱ipa 📲
Commit #️⃣ Finished (UTC) Duration Platform Result
✔️ 9a82770 #11 2024-11-12 16:56:58 ~4 min tests 📄log
✔️ 9a82770 #11 2024-11-12 17:00:03 ~7 min android-e2e 🤖apk 📲
✔️ 9a82770 #11 2024-11-12 17:00:35 ~8 min android 🤖apk 📲
✔️ 9a82770 #12 2024-11-12 17:02:07 ~9 min ios 📱ipa 📲
✔️ 17b87a5 #12 2024-11-13 17:08:43 ~4 min tests 📄log
✔️ 17b87a5 #12 2024-11-13 17:11:56 ~7 min android-e2e 🤖apk 📲
✔️ 17b87a5 #12 2024-11-13 17:12:35 ~8 min android 🤖apk 📲
✔️ 17b87a5 #13 2024-11-13 17:16:14 ~12 min ios 📱ipa 📲

@seanstrom seanstrom force-pushed the seanstrom/password-max-length branch from cefd06e to e4953a1 Compare November 6, 2024 17:57
Copy link
Member Author

@seanstrom seanstrom left a comment

Choose a reason for hiding this comment

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

Self-Review 📑

src/status_im/common/password_with_hint/view.cljs Outdated Show resolved Hide resolved
Comment on lines +44 to +52
[password-with-hint/view
{:hint (if (not password-short-enough?)
{:text (i18n/label
:t/password-creation-max-length-hint)
:status :error
:shown? true}
{:text (i18n/label :t/password-creation-hint)
:status hint-1-status
:shown? true})
Copy link
Member Author

Choose a reason for hiding this comment

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

Here we're showing the "maximum 100 characters" error for the Create Password form.

Comment on lines +104 to +93
[password-with-hint/view
{:hint (if (not short-enough?)
{:text (i18n/label :t/password-creation-max-length-hint)
:status :error
:shown? true}
{:text (i18n/label :t/password-creation-hint)
:status (if long-enough? :success :default)
:shown? true})
Copy link
Member Author

Choose a reason for hiding this comment

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

Here we're showing the "maximum 100 characters" error for the Change Password form.

Comment on lines 1 to 24
(ns status-im.common.password-with-hint.view
(:require
[quo.core :as quo]
[quo.foundations.colors :as colors]
[react-native.core :as rn]
[status-im.common.password-with-hint.style :as style]))

(defn view
[{{:keys [text status shown?]} :hint :as input-props}]
[rn/view
[quo/input
(-> input-props
(dissoc :hint)
(assoc :type :password
:blur? true))]
[rn/view {:style style/info-message}
(when shown?
[quo/info-message
(cond-> {:status status
:size :default}
(not= :success status) (assoc :icon :i/info)
(= :success status) (assoc :icon :i/check-circle)
(= :default status) (assoc :color colors/white-70-blur))
text])]])
Copy link
Member Author

Choose a reason for hiding this comment

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

Here we're creating a common component for both the Create Password and Change Password screens.

@VolodLytvynenko VolodLytvynenko self-assigned this Nov 7, 2024
@status-im-auto
Copy link
Member

88% of end-end tests have passed

Total executed tests: 8
Failed tests: 0
Expected to fail tests: 1
Passed tests: 7
IDs of expected to fail tests: 702843 

Expected to fail tests (1)

Click to expand

Class TestCommunityMultipleDeviceMerged:

1. test_community_message_edit, id: 702843
Test is not run, e2e blocker  

[[reason: [NOTRUN] Skipped due to waku issue on staging fleet]]

Passed tests (7)

Click to expand

Class TestWalletOneDevice:

1. test_wallet_add_remove_regular_account, id: 727231
2. test_wallet_balance_mainnet, id: 740490

Class TestOneToOneChatMultipleSharedDevicesNewUi:

1. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745
Device sessions

Class TestCommunityOneDeviceMerged:

1. test_community_copy_and_paste_message_in_chat_input, id: 702742
Device sessions

2. test_restore_multiaccount_with_waku_backup_remove_profile_switch, id: 703133
Device sessions

Class TestWalletMultipleDevice:

1. test_wallet_send_asset_from_drawer, id: 727230
2. test_wallet_send_eth, id: 727229

@VolodLytvynenko
Copy link
Contributor

VolodLytvynenko commented Nov 7, 2024

hi @seanstrom, thank you for PR. take a look found issues:

ISSUE 1: "Very weak" validation is shown on the 'create profile password' page during onboarding in case when the password field is empty

Steps:

Go to onboarding password creation

Actual result:

  • The "Very weak" validation label is shown even when the password field is empty.
  • Once at least one character is entered, "Very weak" disappears.
    image

Expected result:

  • "Very weak" validation label should not be shown if the password field is empty.
  • The "Very weak" label should appear when 1-2 characters are entered.

https://www.figma.com/design/o4qG1bnFyuyFOvHQVGgeFY/Onboarding-for-Mobile?node-id=12860-104946&node-type=frame&t=9YKldNHYn84kodx1-0

@VolodLytvynenko
Copy link
Contributor

I've just rethought the issue and asked the design team to match expected result

@VolodLytvynenko
Copy link
Contributor

PR_ISSUE 2: "Passwords do not match" validation is not shown on the 'create profile password' page during onboarding

Steps:

  1. Enter different passwords within create and repeat password fields

Actual result:

image

Expected result:

"Passwords do not match" validation is shown

image

https://www.figma.com/design/o4qG1bnFyuyFOvHQVGgeFY/Onboarding-for-Mobile?node-id=12860-105248&node-type=frame&t=9YKldNHYn84kodx1-0

Devices:

  • Pixel 7a, Android 13

@VolodLytvynenko
Copy link
Contributor

PR_ISSUE 3: Password field allows input exceeding 100 characters on 'Create Profile Password' Page and proceeds with such amount

Steps:

  1. Enter in create password and repeat password the value which exceeding 100 characters
  2. Go to the next page

Actual result:

Users can proceed with a password exceeding 100 characters.
image

Expected result:

Confirm password buttons is disabled when max 100 chars validation is enabled

Devices:

  • Pixel 7a, Android 13


(defn view
[{{:keys [text status shown?]} :hint :as input-props}]
[rn/view
Copy link
Contributor

Choose a reason for hiding this comment

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

Could it be a fragment instead of view?

Copy link
Member Author

Choose a reason for hiding this comment

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

Yeah good idea! I'll change it to a fragment 👍

@seanstrom seanstrom force-pushed the seanstrom/password-max-length branch from 817531a to 0660fdf Compare November 7, 2024 17:07
@seanstrom
Copy link
Member Author

@VolodLytvynenko thanks for finding these issues 🙌

For issue 2 and issue 3 , I've pushed up some changes to fix those issues.

Let me know if issue 1 should be addressed in this PR please 🙏

@status-im-auto
Copy link
Member

62% of end-end tests have passed

Total executed tests: 8
Failed tests: 2
Expected to fail tests: 1
Passed tests: 5
IDs of failed tests: 702745,703133 
IDs of expected to fail tests: 702843 

Failed tests (2)

Click to expand
  • Rerun failed tests

  • Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745
    Test setup failed: critical/chats/test_1_1_public_chats.py:20: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:330: in create_shared_drivers
        raise e
    base_test_case.py:320: in create_shared_drivers
        test_suite_data.current_test.testruns[-1].jobs[drivers[i].session_id] = i + 1
     '_asyncio.Future' object has no attribute 'session_id'
    



    Device sessions

    Class TestCommunityOneDeviceMerged:

    1. test_restore_multiaccount_with_waku_backup_remove_profile_switch, id: 703133

    Device 1: Find Button by accessibility id: show-profiles
    Device 1: Tap on found: Button

    critical/chats/test_public_chat_browsing.py:247: in test_restore_multiaccount_with_waku_backup_remove_profile_switch
        self.errors.verify_no_errors()
    base_test_case.py:192: in verify_no_errors
        pytest.fail('\n '.join([self.errors.pop(0) for _ in range(len(self.errors))]))
     zQ3...dWXh5 was not restored as a contact from waku backup!
    E    zQ3...Vacac was not restored as a contact from waku backup!
    E    admin_open was not restored from waku-backup!!
    E    member_open was not restored from waku-backup!!
    E    admin_closed was not restored from waku-backup!!
    E    member_closed was not restored from waku-backup!!
    



    Device sessions

    Expected to fail tests (1)

    Click to expand

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_message_edit, id: 702843

    Test is not run, e2e blocker  
    

    [[reason: [NOTRUN] Skipped due to waku issue on staging fleet]]

    Passed tests (5)

    Click to expand

    Class TestWalletMultipleDevice:

    1. test_wallet_send_asset_from_drawer, id: 727230
    2. test_wallet_send_eth, id: 727229

    Class TestWalletOneDevice:

    1. test_wallet_add_remove_regular_account, id: 727231
    2. test_wallet_balance_mainnet, id: 740490

    Class TestCommunityOneDeviceMerged:

    1. test_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    @VolodLytvynenko
    Copy link
    Contributor

    VolodLytvynenko commented Nov 8, 2024

    Hi @seanstrom, thank you for fixes. And sorry for the PR's back-and-forth. I think it's best to fix Issue 1 within this PR. We don’t know when the validation simplification will be done, and merging as-is would mean showing 'Very Weak' by default on the create profile password page, which seems worse than the current issue on the latest develop where 'Very Strong' is not shown at all

    Also, the current PR has different validation logic for 'create profile password' and 'change password':

    For now:
    On Create profile password page:

    Very Weak - shown by default
    Weak - 1 condition met
    OK - 2 conditions met
    Strong - 3 conditions met
    Very Strong - 4 conditions met

    While on Change password:

    Very Weak - 1 condition met
    Weak - 2 conditions met
    OK - 3 conditions met
    Strong - 4 conditions met
    Very Strong - never shown

    Neither setup is ideal, but aligning them with a consistent logic would be better.

    Expected result:
    The logic of validation of a strong password follows the same rules as on the latest nightly
    Very Weak - 1 condition met
    Weak - 2 conditions met
    OK - 3 conditions met
    Strong - 4 conditions met
    Very Strong - never shown

    @ilmotta
    Copy link
    Contributor

    ilmotta commented Nov 8, 2024

    Hey @VolodLytvynenko @seanstrom, I think this password strength validator leaves a lot to be desired. For example, a password aA1! is shown as strong in Status. Check out https://www.passwordmonster.com/, over there we see this password can be cracked instantly and it is shown as very weak. Our implementation is leading the user in the wrong direction, which is bad for security.

    I would remove this feature completely from the onboarding and only keep the basic length validation, but to align this point would take approvals from other folks. If you would like to see this discussion move forward please give a thumbs up and I'll gladly try to help.

    Edit: this separate discussion shouldn't block this PR 🚀

    @seanstrom
    Copy link
    Member Author

    @VolodLytvynenko Sounds good, about making them consistent and not showing "Very weak" by default 👍

    I've pushed a change that should make them consistent for both change-password and create-password screens. Now both of them will not show "Very weak" by default. Let me know what you think 🙏

    @seanstrom
    Copy link
    Member Author

    @ilmotta we may be able to create a more nuanced calculation for password strength. Currently we only count how many validations have passed, but we could try to create something that only follows some of the guidelines mentioned here.

    Overall I'm okay with removing a misleading feature, and if we can prioritise a better feature that would be nice too 🙌

    @ilmotta
    Copy link
    Contributor

    ilmotta commented Nov 8, 2024

    The following is an interesting discussion from Bitwarden. Even more sophisticated calculations can be very misleading.

    Do you use password strength indicators? Complete this survey https://community.bitwarden.com/t/do-you-use-password-strength-indicators-complete-this-survey/62738/2

    Next week I'll try to take the discussion somewhere else and hear other people's opinions. Similar to how we discussed about identity rings and eventually descoped it completely from the product. Now, better than ever is a good chance to understand why things were built the way they were and improve.

    @ilmotta
    Copy link
    Contributor

    ilmotta commented Nov 11, 2024

    @seanstrom @VolodLytvynenko In the desktop app, the strength validator is somewhat useful, but in mobile it's quite misleading/wrong. For example, in desktop, the password aA1! is considered very weak, in mobile it's considered strong.

    I'll create a new issue about this feature parity problem 👍🏼 It's going to be a low priority feature to work on for 2.32, even though it's related to the onboarding.

    @status-im-auto
    Copy link
    Member

    25% of end-end tests have passed

    Total executed tests: 8
    Failed tests: 5
    Expected to fail tests: 1
    Passed tests: 2
    
    IDs of failed tests: 727230,702745,702742,727229,703133 
    
    IDs of expected to fail tests: 702843 
    

    Failed tests (5)

    Click to expand
  • Rerun failed tests

  • Class TestWalletMultipleDevice:

    1. test_wallet_send_asset_from_drawer, id: 727230
    Test setup failed: critical/test_wallet.py:22: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:330: in create_shared_drivers
        raise e
    base_test_case.py:320: in create_shared_drivers
        test_suite_data.current_test.testruns[-1].jobs[drivers[i].session_id] = i + 1
     '_asyncio.Future' object has no attribute 'session_id'
    



    2. test_wallet_send_eth, id: 727229

    Test setup failed: critical/test_wallet.py:22: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:330: in create_shared_drivers
        raise e
    base_test_case.py:320: in create_shared_drivers
        test_suite_data.current_test.testruns[-1].jobs[drivers[i].session_id] = i + 1
     '_asyncio.Future' object has no attribute 'session_id'
    



    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745

    Test setup failed: critical/chats/test_1_1_public_chats.py:20: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:330: in create_shared_drivers
        raise e
    base_test_case.py:320: in create_shared_drivers
        test_suite_data.current_test.testruns[-1].jobs[drivers[i].session_id] = i + 1
     '_asyncio.Future' object has no attribute 'session_id'
    



    Class TestCommunityOneDeviceMerged:

    1. test_community_copy_and_paste_message_in_chat_input, id: 702742

    Test setup failed: critical/chats/test_public_chat_browsing.py:22: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(1)
    base_test_case.py:330: in create_shared_drivers
        raise e
    base_test_case.py:320: in create_shared_drivers
        test_suite_data.current_test.testruns[-1].jobs[drivers[i].session_id] = i + 1
     '_asyncio.Future' object has no attribute 'session_id'
    



    2. test_restore_multiaccount_with_waku_backup_remove_profile_switch, id: 703133

    Test setup failed: critical/chats/test_public_chat_browsing.py:22: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(1)
    base_test_case.py:330: in create_shared_drivers
        raise e
    base_test_case.py:320: in create_shared_drivers
        test_suite_data.current_test.testruns[-1].jobs[drivers[i].session_id] = i + 1
     '_asyncio.Future' object has no attribute 'session_id'
    



    Expected to fail tests (1)

    Click to expand

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_message_edit, id: 702843

    Test is not run, e2e blocker  
    

    [[reason: [NOTRUN] Skipped due to waku issue on staging fleet]]

    Passed tests (2)

    Click to expand

    Class TestWalletOneDevice:

    1. test_wallet_add_remove_regular_account, id: 727231
    2. test_wallet_balance_mainnet, id: 740490

    @status-im-auto
    Copy link
    Member

    0% of end-end tests have passed

    Total executed tests: 5
    Failed tests: 5
    Expected to fail tests: 0
    Passed tests: 0
    
    IDs of failed tests: 727230,702745,703133,702742,727229 
    

    Failed tests (5)

    Click to expand
  • Rerun failed tests

  • Class TestCommunityOneDeviceMerged:

    1. test_restore_multiaccount_with_waku_backup_remove_profile_switch, id: 703133
    Test setup failed: critical/chats/test_public_chat_browsing.py:22: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(1)
    base_test_case.py:330: in create_shared_drivers
        raise e
    base_test_case.py:320: in create_shared_drivers
        test_suite_data.current_test.testruns[-1].jobs[drivers[i].session_id] = i + 1
     '_asyncio.Future' object has no attribute 'session_id'
    



    2. test_community_copy_and_paste_message_in_chat_input, id: 702742

    Test setup failed: critical/chats/test_public_chat_browsing.py:22: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(1)
    base_test_case.py:330: in create_shared_drivers
        raise e
    base_test_case.py:320: in create_shared_drivers
        test_suite_data.current_test.testruns[-1].jobs[drivers[i].session_id] = i + 1
     '_asyncio.Future' object has no attribute 'session_id'
    



    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745

    Test setup failed: critical/chats/test_1_1_public_chats.py:20: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:330: in create_shared_drivers
        raise e
    base_test_case.py:320: in create_shared_drivers
        test_suite_data.current_test.testruns[-1].jobs[drivers[i].session_id] = i + 1
     '_asyncio.Future' object has no attribute 'session_id'
    



    Class TestWalletMultipleDevice:

    1. test_wallet_send_asset_from_drawer, id: 727230

    Test setup failed: critical/test_wallet.py:22: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:330: in create_shared_drivers
        raise e
    base_test_case.py:320: in create_shared_drivers
        test_suite_data.current_test.testruns[-1].jobs[drivers[i].session_id] = i + 1
     '_asyncio.Future' object has no attribute 'session_id'
    



    2. test_wallet_send_eth, id: 727229

    Test setup failed: critical/test_wallet.py:22: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:330: in create_shared_drivers
        raise e
    base_test_case.py:320: in create_shared_drivers
        test_suite_data.current_test.testruns[-1].jobs[drivers[i].session_id] = i + 1
     '_asyncio.Future' object has no attribute 'session_id'
    



    @VolodLytvynenko
    Copy link
    Contributor

    hi @seanstrom Thank you for the fixes. Unfortunately, additional issue is found

    PR_ISSUE 4: "Maximum 100 chars" validation is shown by default on create "password password" and "change password" pages

    Steps:

    1. Open "create profile password" page
    2. Open "change profile password" page

    Actual result:

    "Maximum 100 chars" validation is shown by default
    image

    Expected result:

    The "Maximum 100 chars" validation message should only be displayed after the user enters more than 100 characters.

    Devices:

    • Pixel 7a, Android 13
    • iPhone 11 Pro Max, IOS 17

    @seanstrom
    Copy link
    Member Author

    Hey @VolodLytvynenko thank you for catching that issue, I've pushed another fix that should show the correct password hint before typing in the password.

    @status-im-auto
    Copy link
    Member

    62% of end-end tests have passed

    Total executed tests: 8
    Failed tests: 2
    Expected to fail tests: 1
    Passed tests: 5
    
    IDs of failed tests: 727230,727229 
    
    IDs of expected to fail tests: 702843 
    

    Failed tests (2)

    Click to expand
  • Rerun failed tests

  • Class TestWalletMultipleDevice:

    1. test_wallet_send_asset_from_drawer, id: 727230
    Test setup failed: critical/test_wallet.py:22: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:330: in create_shared_drivers
        raise e
    base_test_case.py:320: in create_shared_drivers
        test_suite_data.current_test.testruns[-1].jobs[drivers[i].session_id] = i + 1
     '_asyncio.Future' object has no attribute 'session_id'
    



    2. test_wallet_send_eth, id: 727229

    Test setup failed: critical/test_wallet.py:22: in prepare_devices
        self.drivers, self.loop = create_shared_drivers(2)
    base_test_case.py:330: in create_shared_drivers
        raise e
    base_test_case.py:320: in create_shared_drivers
        test_suite_data.current_test.testruns[-1].jobs[drivers[i].session_id] = i + 1
     '_asyncio.Future' object has no attribute 'session_id'
    



    Expected to fail tests (1)

    Click to expand

    Class TestCommunityMultipleDeviceMerged:

    1. test_community_message_edit, id: 702843

    Test is not run, e2e blocker  
    

    [[reason: [NOTRUN] Skipped due to waku issue on staging fleet]]

    Passed tests (5)

    Click to expand

    Class TestCommunityOneDeviceMerged:

    1. test_community_copy_and_paste_message_in_chat_input, id: 702742
    Device sessions

    2. test_restore_multiaccount_with_waku_backup_remove_profile_switch, id: 703133
    Device sessions

    Class TestOneToOneChatMultipleSharedDevicesNewUi:

    1. test_1_1_chat_non_latin_messages_stack_update_profile_photo, id: 702745
    Device sessions

    Class TestWalletOneDevice:

    1. test_wallet_add_remove_regular_account, id: 727231
    2. test_wallet_balance_mainnet, id: 740490

    @status-im-auto
    Copy link
    Member

    100% of end-end tests have passed

    Total executed tests: 2
    Failed tests: 0
    Expected to fail tests: 0
    Passed tests: 2
    

    Passed tests (2)

    Click to expand

    Class TestWalletMultipleDevice:

    1. test_wallet_send_asset_from_drawer, id: 727230
    2. test_wallet_send_eth, id: 727229

    @VolodLytvynenko
    Copy link
    Contributor

    hi @seanstrom thank you for PR. No issues from my side. PR is ready to be merged

    @seanstrom seanstrom merged commit cf0fba7 into develop Nov 13, 2024
    5 checks passed
    @seanstrom seanstrom deleted the seanstrom/password-max-length branch November 13, 2024 17:30
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    Status: DONE
    Development

    Successfully merging this pull request may close these issues.

    Add a max length verification for the password and increase the limit to 100 characters
    5 participants