From c2be09f55aee1f0d4f65ed7751fe3412f0ea0375 Mon Sep 17 00:00:00 2001 From: Ming Rui Zhang <mingrui.zhang@savoirfairelinux.com> Date: Mon, 2 Aug 2021 17:31:46 -0400 Subject: [PATCH] test: add wizardview key navigation test Gitlab: #470 Change-Id: I598cab490149739858958e89cc40cabb5820714a --- src/commoncomponents/PhotoboothView.qml | 8 + src/wizardview/components/BackupKeyPage.qml | 12 +- .../ConnectToAccountManagerPage.qml | 8 + .../components/CreateAccountPage.qml | 6 + .../components/CreateSIPAccountPage.qml | 4 +- .../components/ImportFromBackupPage.qml | 4 +- .../components/ImportFromDevicePage.qml | 6 + src/wizardview/components/ProfilePage.qml | 2 + src/wizardview/components/WelcomePage.qml | 16 + tests/qml/src/tst_WizardView.qml | 1091 ++++++++++++++++- 10 files changed, 1150 insertions(+), 7 deletions(-) diff --git a/src/commoncomponents/PhotoboothView.qml b/src/commoncomponents/PhotoboothView.qml index 4593c808f..ccd71b030 100644 --- a/src/commoncomponents/PhotoboothView.qml +++ b/src/commoncomponents/PhotoboothView.qml @@ -68,6 +68,8 @@ Item { JamiFileDialog { id: importFromFileDialog + objectName: "photoboothImportFromFileDialog" + mode: JamiFileDialog.OpenFile title: JamiStrings.chooseAvatarImage folder: StandardPaths.writableLocation(StandardPaths.PicturesLocation) @@ -181,6 +183,8 @@ Item { PushButton { id: takePhotoButton + objectName: "takePhotoButton" + Layout.alignment: Qt.AlignHCenter radius: JamiTheme.primaryRadius @@ -223,6 +227,8 @@ Item { PushButton { id: clearButton + objectName: "photoboothViewClearButton" + Layout.alignment: Qt.AlignHCenter visible: LRCInstance.currentAccountAvatarSet @@ -253,6 +259,8 @@ Item { PushButton { id: importButton + objectName: "photoboothViewImportButton" + property bool focusAfterFileDialogClosed: false Layout.alignment: Qt.AlignHCenter diff --git a/src/wizardview/components/BackupKeyPage.qml b/src/wizardview/components/BackupKeyPage.qml index af1455110..bdb9d1f41 100644 --- a/src/wizardview/components/BackupKeyPage.qml +++ b/src/wizardview/components/BackupKeyPage.qml @@ -162,7 +162,9 @@ Rectangle { } JamiSwitch { - id: passwordSwitch + id: neverShowMeAgainSwitch + + objectName: "neverShowMeAgainSwitch" Layout.alignment: Qt.AlignRight @@ -179,6 +181,8 @@ Rectangle { MaterialButton { id: backupBtn + objectName: "backupKeyPageBackupBtn" + Layout.alignment: Qt.AlignCenter Layout.preferredWidth: preferredWidth Layout.preferredHeight: preferredHeight @@ -189,7 +193,7 @@ Rectangle { pressedColor: JamiTheme.buttonTintedGreyPressed KeyNavigation.tab: skipBackupBtn - KeyNavigation.up: passwordSwitch + KeyNavigation.up: neverShowMeAgainSwitch KeyNavigation.down: KeyNavigation.tab onClicked: exportDialog.open() @@ -198,6 +202,8 @@ Rectangle { MaterialButton { id: skipBackupBtn + objectName: "backupKeyPageSkipBackupBtn" + Layout.alignment: Qt.AlignCenter Layout.bottomMargin: JamiTheme.wizardViewPageBackButtonMargins Layout.preferredWidth: preferredWidth @@ -209,7 +215,7 @@ Rectangle { pressedColor: JamiTheme.buttonTintedGreyPressed outlined: true - KeyNavigation.tab: passwordSwitch + KeyNavigation.tab: neverShowMeAgainSwitch KeyNavigation.up: backupBtn KeyNavigation.down: KeyNavigation.tab diff --git a/src/wizardview/components/ConnectToAccountManagerPage.qml b/src/wizardview/components/ConnectToAccountManagerPage.qml index 7645c6c7c..43236c546 100644 --- a/src/wizardview/components/ConnectToAccountManagerPage.qml +++ b/src/wizardview/components/ConnectToAccountManagerPage.qml @@ -95,6 +95,8 @@ Rectangle { MaterialLineEdit { id: accountManagerEdit + objectName: "accountManagerEdit" + Layout.preferredHeight: fieldLayoutHeight Layout.preferredWidth: connectBtn.width Layout.alignment: Qt.AlignCenter @@ -136,6 +138,8 @@ Rectangle { MaterialLineEdit { id: usernameManagerEdit + objectName: "usernameManagerEdit" + Layout.preferredHeight: fieldLayoutHeight Layout.preferredWidth: connectBtn.width Layout.alignment: Qt.AlignCenter @@ -157,6 +161,8 @@ Rectangle { MaterialLineEdit { id: passwordManagerEdit + objectName: "passwordManagerEdit" + Layout.preferredHeight: fieldLayoutHeight Layout.preferredWidth: connectBtn.width Layout.alignment: Qt.AlignCenter @@ -185,6 +191,8 @@ Rectangle { SpinnerButton { id: connectBtn + objectName: "connectToAccountManagerPageConnectBtn" + Layout.alignment: Qt.AlignCenter Layout.bottomMargin: errorLabel.visible ? 0 : JamiTheme.wizardViewPageBackButtonMargins Layout.preferredWidth: preferredWidth diff --git a/src/wizardview/components/CreateAccountPage.qml b/src/wizardview/components/CreateAccountPage.qml index 2788bfa2a..f850a2b82 100644 --- a/src/wizardview/components/CreateAccountPage.qml +++ b/src/wizardview/components/CreateAccountPage.qml @@ -166,6 +166,8 @@ Rectangle { MaterialButton { id: chooseUsernameButton + objectName: "chooseUsernameButton" + Layout.alignment: Qt.AlignCenter Layout.preferredWidth: preferredWidth Layout.preferredHeight: preferredHeight @@ -189,6 +191,8 @@ Rectangle { MaterialButton { id: skipButton + objectName: "nameRegistrationPageSkipButton" + Layout.alignment: Qt.AlignCenter Layout.preferredWidth: preferredWidth Layout.preferredHeight: preferredHeight @@ -392,6 +396,8 @@ Rectangle { BackButton { id: backButton + objectName: "createAccountPageBackButton" + anchors.left: parent.left anchors.top: parent.top anchors.margins: JamiTheme.wizardViewPageBackButtonMargins diff --git a/src/wizardview/components/CreateSIPAccountPage.qml b/src/wizardview/components/CreateSIPAccountPage.qml index 4c2346cc8..2517b9612 100644 --- a/src/wizardview/components/CreateSIPAccountPage.qml +++ b/src/wizardview/components/CreateSIPAccountPage.qml @@ -165,7 +165,7 @@ Rectangle { MaterialButton { id: createAccountButton - objectName: "createAccountButton" + objectName: "createSIPAccountButton" Layout.alignment: Qt.AlignCenter Layout.bottomMargin: JamiTheme.wizardViewPageBackButtonMargins @@ -196,6 +196,8 @@ Rectangle { BackButton { id: backButton + objectName: "createSIPAccountPageBackButton" + anchors.left: parent.left anchors.top: parent.top anchors.margins: 20 diff --git a/src/wizardview/components/ImportFromBackupPage.qml b/src/wizardview/components/ImportFromBackupPage.qml index f6fdf0f79..5929e483a 100644 --- a/src/wizardview/components/ImportFromBackupPage.qml +++ b/src/wizardview/components/ImportFromBackupPage.qml @@ -116,6 +116,8 @@ Rectangle { MaterialButton { id: fileImportBtn + objectName: "fileImportBtn" + Layout.alignment: Qt.AlignCenter Layout.preferredWidth: preferredWidth Layout.preferredHeight: preferredHeight @@ -198,7 +200,7 @@ Rectangle { SpinnerButton { id: connectBtn - objectName: "connectBtn" + objectName: "importFromBackupPageConnectBtn" Layout.alignment: Qt.AlignCenter Layout.bottomMargin: errorLabel.visible ? 0 : JamiTheme.wizardViewPageBackButtonMargins diff --git a/src/wizardview/components/ImportFromDevicePage.qml b/src/wizardview/components/ImportFromDevicePage.qml index 049934bcd..1dbad970a 100644 --- a/src/wizardview/components/ImportFromDevicePage.qml +++ b/src/wizardview/components/ImportFromDevicePage.qml @@ -83,6 +83,8 @@ Rectangle { MaterialLineEdit { id: passwordFromDevice + objectName: "passwordFromDevice" + Layout.preferredHeight: fieldLayoutHeight Layout.preferredWidth: connectBtn.width Layout.alignment: Qt.AlignCenter @@ -128,6 +130,8 @@ Rectangle { MaterialLineEdit { id: pinFromDevice + objectName: "pinFromDevice" + Layout.preferredHeight: fieldLayoutHeight Layout.preferredWidth: connectBtn.width Layout.alignment: Qt.AlignCenter @@ -157,6 +161,8 @@ Rectangle { SpinnerButton { id: connectBtn + objectName: "importFromDevicePageConnectBtn" + Layout.alignment: Qt.AlignCenter Layout.bottomMargin: errorLabel.visible ? 0 : JamiTheme.wizardViewPageBackButtonMargins Layout.preferredWidth: preferredWidth diff --git a/src/wizardview/components/ProfilePage.qml b/src/wizardview/components/ProfilePage.qml index 1292916d7..87f4a592c 100644 --- a/src/wizardview/components/ProfilePage.qml +++ b/src/wizardview/components/ProfilePage.qml @@ -99,6 +99,8 @@ Rectangle { PhotoboothView { id: setAvatarWidget + objectName: "setAvatarWidget" + Layout.alignment: Qt.AlignCenter imageId: createdAccountId diff --git a/src/wizardview/components/WelcomePage.qml b/src/wizardview/components/WelcomePage.qml index 0d86072a6..0fb452839 100644 --- a/src/wizardview/components/WelcomePage.qml +++ b/src/wizardview/components/WelcomePage.qml @@ -96,6 +96,8 @@ Rectangle { MaterialButton { id: newAccountButton + objectName: "newAccountButton" + Layout.alignment: Qt.AlignCenter Layout.preferredWidth: preferredWidth Layout.preferredHeight: preferredHeight @@ -122,6 +124,8 @@ Rectangle { MaterialButton { id: newRdvButton + objectName: "newRdvButton" + Layout.alignment: Qt.AlignCenter Layout.preferredWidth: preferredWidth Layout.preferredHeight: preferredHeight @@ -145,6 +149,8 @@ Rectangle { MaterialButton { id: fromDeviceButton + objectName: "fromDeviceButton" + Layout.alignment: Qt.AlignCenter Layout.preferredWidth: preferredWidth Layout.preferredHeight: preferredHeight @@ -168,6 +174,8 @@ Rectangle { MaterialButton { id: fromBackupButton + objectName: "fromBackupButton" + Layout.alignment: Qt.AlignCenter Layout.preferredWidth: preferredWidth Layout.preferredHeight: preferredHeight @@ -191,6 +199,8 @@ Rectangle { MaterialButton { id: showAdvancedButton + objectName: "showAdvancedButton" + property bool showAdvanced: false Layout.alignment: Qt.AlignCenter @@ -225,6 +235,8 @@ Rectangle { MaterialButton { id: connectAccountManagerButton + objectName: "connectAccountManagerButton" + Layout.alignment: Qt.AlignCenter Layout.preferredWidth: preferredWidth Layout.preferredHeight: preferredHeight @@ -250,6 +262,8 @@ Rectangle { MaterialButton { id: newSIPAccountButton + objectName: "newSIPAccountButton" + Layout.alignment: Qt.AlignCenter Layout.bottomMargin: JamiTheme.wizardViewPageBackButtonMargins Layout.preferredWidth: preferredWidth @@ -279,6 +293,8 @@ Rectangle { BackButton { id: backButton + objectName: "welcomePageBackButton" + anchors.left: parent.left anchors.top: parent.top anchors.margins: JamiTheme.wizardViewPageBackButtonMargins diff --git a/tests/qml/src/tst_WizardView.qml b/tests/qml/src/tst_WizardView.qml index 49ada23dd..9049cbad6 100644 --- a/tests/qml/src/tst_WizardView.qml +++ b/tests/qml/src/tst_WizardView.qml @@ -25,6 +25,7 @@ import net.jami.Constants 1.0 import net.jami.Enums 1.0 import "qrc:/src/wizardview" +import "qrc:/src/commoncomponents" WizardView { id: uut @@ -420,7 +421,7 @@ WizardView { var sipPasswordEdit = findChild(createSIPAccountPage, "sipPasswordEdit") var sipServernameEdit = findChild(createSIPAccountPage, "sipServernameEdit") var sipProxyEdit = findChild(createSIPAccountPage, "sipProxyEdit") - var createAccountButton = findChild(createSIPAccountPage, "createAccountButton") + var createAccountButton = findChild(createSIPAccountPage, "createSIPAccountButton") var saveProfileBtn = findChild(profilePage, "saveProfileBtn") @@ -490,7 +491,7 @@ WizardView { var profilePage = findChild(uut, "profilePage") var passwordFromBackupEdit = findChild(importFromBackupPage, "passwordFromBackupEdit") - var connectBtn = findChild(importFromBackupPage, "connectBtn") + var connectBtn = findChild(importFromBackupPage, "importFromBackupPageConnectBtn") var errorLabel = findChild(importFromBackupPage, "errorLabel") var backButton = findChild(importFromBackupPage, "importFromBackupPageBackButton") @@ -543,4 +544,1090 @@ WizardView { compare(spyAccountIsRemoved.count, 1) } } + + TestCase { + name: "Wizardview key navigation" + when: windowShown + + function test_welcomePageKeyNavigation() { + var welcomePage = findChild(uut, "welcomePage") + + var newAccountButton = findChild(welcomePage, "newAccountButton") + var newRdvButton = findChild(welcomePage, "newRdvButton") + var fromDeviceButton = findChild(welcomePage, "fromDeviceButton") + var fromBackupButton = findChild(welcomePage, "fromBackupButton") + var showAdvancedButton = findChild(welcomePage, "showAdvancedButton") + var connectAccountManagerButton = findChild(welcomePage, "connectAccountManagerButton") + var newSIPAccountButton = findChild(welcomePage, "newSIPAccountButton") + var welcomePageBackButton = findChild(welcomePage, "welcomePageBackButton") + + welcomePageBackButton.visible = true + + // ShowAdvanced is false + keyClick(Qt.Key_Tab) + compare(newAccountButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(newRdvButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(fromDeviceButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(fromBackupButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(showAdvancedButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(welcomePageBackButton.focus, true) + + // Set showAdvanced to true + keyClick(Qt.Key_Up) + compare(showAdvancedButton.focus, true) + + keyClick(Qt.Key_Enter) + compare(showAdvancedButton.showAdvanced, true) + + keyClick(Qt.Key_Tab) + compare(connectAccountManagerButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(newSIPAccountButton.focus, true) + + // Use down button + keyClick(Qt.Key_Down) + compare(welcomePageBackButton.focus, true) + + keyClick(Qt.Key_Down) + compare(newAccountButton.focus, true) + + keyClick(Qt.Key_Down) + compare(newRdvButton.focus, true) + + keyClick(Qt.Key_Down) + compare(fromDeviceButton.focus, true) + + keyClick(Qt.Key_Down) + compare(fromBackupButton.focus, true) + + keyClick(Qt.Key_Down) + compare(showAdvancedButton.focus, true) + + keyClick(Qt.Key_Down) + compare(connectAccountManagerButton.focus, true) + + keyClick(Qt.Key_Down) + compare(newSIPAccountButton.focus, true) + + keyClick(Qt.Key_Down) + compare(welcomePageBackButton.focus, true) + + // Use up button + keyClick(Qt.Key_Up) + compare(newSIPAccountButton.focus, true) + + keyClick(Qt.Key_Up) + compare(connectAccountManagerButton.focus, true) + + keyClick(Qt.Key_Up) + compare(showAdvancedButton.focus, true) + + keyClick(Qt.Key_Up) + compare(fromBackupButton.focus, true) + + keyClick(Qt.Key_Up) + compare(fromDeviceButton.focus, true) + + keyClick(Qt.Key_Up) + compare(newRdvButton.focus, true) + + keyClick(Qt.Key_Up) + compare(newAccountButton.focus, true) + } + + function test_createAccountPageKeyNavigation() { + var welcomePage = findChild(uut, "welcomePage") + var createAccountPage = findChild(uut, "createAccountPage") + + var newAccountButton = findChild(welcomePage, "newAccountButton") + + var usernameEdit = findChild(createAccountPage, "usernameEdit") + var chooseUsernameButton = findChild(createAccountPage, + "chooseUsernameButton") + var nameRegistrationPageSkipButton = findChild(createAccountPage, + "nameRegistrationPageSkipButton") + var passwordEdit = findChild(createAccountPage, "passwordEdit") + var passwordSwitch = findChild(createAccountPage, "passwordSwitch") + var passwordConfirmEdit = findChild(createAccountPage, "passwordConfirmEdit") + var createAccountButton = findChild(createAccountPage, + "createAccountButton") + var createAccountPageBackButton = findChild(createAccountPage, + "createAccountPageBackButton") + + // To createAccountPage - nameRegistrationPage + keyClick(Qt.Key_Tab) + compare(newAccountButton.focus, true) + + keyClick(Qt.Key_Enter) + compare(usernameEdit.focus, true) + + // No username + keyClick(Qt.Key_Tab) + compare(nameRegistrationPageSkipButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(createAccountPageBackButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(usernameEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(nameRegistrationPageSkipButton.focus, true) + + keyClick(Qt.Key_Down) + compare(createAccountPageBackButton.focus, true) + + keyClick(Qt.Key_Down) + compare(usernameEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(createAccountPageBackButton.focus, true) + + keyClick(Qt.Key_Up) + compare(nameRegistrationPageSkipButton.focus, true) + + keyClick(Qt.Key_Up) + compare(usernameEdit.focus, true) + + // With username + usernameEdit.nameRegistrationState = + UsernameLineEdit.NameRegistrationState.FREE + + keyClick(Qt.Key_Tab) + compare(chooseUsernameButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(nameRegistrationPageSkipButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(createAccountPageBackButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(usernameEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(chooseUsernameButton.focus, true) + + keyClick(Qt.Key_Down) + compare(nameRegistrationPageSkipButton.focus, true) + + keyClick(Qt.Key_Down) + compare(createAccountPageBackButton.focus, true) + + keyClick(Qt.Key_Down) + compare(usernameEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(createAccountPageBackButton.focus, true) + + keyClick(Qt.Key_Up) + compare(nameRegistrationPageSkipButton.focus, true) + + keyClick(Qt.Key_Up) + compare(chooseUsernameButton.focus, true) + + keyClick(Qt.Key_Up) + compare(usernameEdit.focus, true) + + // To createAccountPage - passwordSetupPage + keyClick(Qt.Key_Down) + keyClick(Qt.Key_Down) + keyClick(Qt.Key_Enter) + keyClick(Qt.Key_Tab) + compare(passwordSwitch.focus, true) + + // No password + keyClick(Qt.Key_Tab) + compare(createAccountButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(createAccountPageBackButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(passwordSwitch.focus, true) + + keyClick(Qt.Key_Down) + compare(createAccountButton.focus, true) + + keyClick(Qt.Key_Down) + compare(createAccountPageBackButton.focus, true) + + keyClick(Qt.Key_Down) + compare(passwordSwitch.focus, true) + + keyClick(Qt.Key_Up) + compare(createAccountPageBackButton.focus, true) + + keyClick(Qt.Key_Up) + compare(createAccountButton.focus, true) + + keyClick(Qt.Key_Up) + compare(passwordSwitch.focus, true) + + // With password - no text entered + keyClick(Qt.Key_Enter) + compare(passwordEdit.focus, true) + + keyClick(Qt.Key_Tab) + compare(passwordConfirmEdit.focus, true) + + keyClick(Qt.Key_Tab) + compare(createAccountPageBackButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(passwordSwitch.focus, true) + + keyClick(Qt.Key_Down) + compare(passwordEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(passwordConfirmEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(createAccountPageBackButton.focus, true) + + keyClick(Qt.Key_Down) + compare(passwordSwitch.focus, true) + + keyClick(Qt.Key_Up) + compare(createAccountPageBackButton.focus, true) + + keyClick(Qt.Key_Up) + compare(passwordConfirmEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(passwordEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(passwordSwitch.focus, true) + + // With password - with text entered + passwordEdit.text = "test" + passwordConfirmEdit.text = "test" + + keyClick(Qt.Key_Tab) + compare(passwordEdit.focus, true) + + keyClick(Qt.Key_Tab) + compare(passwordConfirmEdit.focus, true) + + keyClick(Qt.Key_Tab) + compare(createAccountButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(createAccountPageBackButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(passwordSwitch.focus, true) + + keyClick(Qt.Key_Down) + compare(passwordEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(passwordConfirmEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(createAccountButton.focus, true) + + keyClick(Qt.Key_Down) + compare(createAccountPageBackButton.focus, true) + + keyClick(Qt.Key_Down) + compare(passwordSwitch.focus, true) + + keyClick(Qt.Key_Up) + compare(createAccountPageBackButton.focus, true) + + keyClick(Qt.Key_Up) + compare(createAccountButton.focus, true) + + keyClick(Qt.Key_Up) + compare(passwordConfirmEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(passwordEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(passwordSwitch.focus, true) + + // Go back to welcomePage + keyClick(Qt.Key_Up) + keyClick(Qt.Key_Enter) + keyClick(Qt.Key_Up) + keyClick(Qt.Key_Enter) + } + + function test_importFromDevicePageKeyNavigation() { + var welcomePage = findChild(uut, "welcomePage") + var importFromDevicePage = findChild(uut, "importFromDevicePage") + + var fromDeviceButton = findChild(welcomePage, "fromDeviceButton") + + var pinFromDevice = findChild(importFromDevicePage, "pinFromDevice") + var importFromDevicePageConnectBtn = findChild(importFromDevicePage, + "importFromDevicePageConnectBtn") + var passwordFromDevice = findChild(importFromDevicePage, "passwordFromDevice") + var importFromDevicePageBackButton = findChild(importFromDevicePage, + "importFromDevicePageBackButton") + + // To importFromDevicePage + keyClick(Qt.Key_Tab) + keyClick(Qt.Key_Tab) + keyClick(Qt.Key_Tab) + compare(fromDeviceButton.focus, true) + + keyClick(Qt.Key_Enter) + compare(pinFromDevice.focus, true) + + // No device pin + keyClick(Qt.Key_Tab) + compare(importFromDevicePageBackButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(passwordFromDevice.focus, true) + + keyClick(Qt.Key_Tab) + compare(pinFromDevice.focus, true) + + keyClick(Qt.Key_Down) + compare(importFromDevicePageBackButton.focus, true) + + keyClick(Qt.Key_Down) + compare(passwordFromDevice.focus, true) + + keyClick(Qt.Key_Down) + compare(pinFromDevice.focus, true) + + keyClick(Qt.Key_Up) + compare(passwordFromDevice.focus, true) + + keyClick(Qt.Key_Up) + compare(importFromDevicePageBackButton.focus, true) + + keyClick(Qt.Key_Up) + compare(pinFromDevice.focus, true) + + // With device pin + pinFromDevice.text = "test" + + keyClick(Qt.Key_Tab) + compare(importFromDevicePageConnectBtn.focus, true) + + keyClick(Qt.Key_Tab) + compare(importFromDevicePageBackButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(passwordFromDevice.focus, true) + + keyClick(Qt.Key_Tab) + compare(pinFromDevice.focus, true) + + keyClick(Qt.Key_Down) + compare(importFromDevicePageConnectBtn.focus, true) + + keyClick(Qt.Key_Down) + compare(importFromDevicePageBackButton.focus, true) + + keyClick(Qt.Key_Down) + compare(passwordFromDevice.focus, true) + + keyClick(Qt.Key_Down) + compare(pinFromDevice.focus, true) + + keyClick(Qt.Key_Up) + compare(passwordFromDevice.focus, true) + + keyClick(Qt.Key_Up) + compare(importFromDevicePageBackButton.focus, true) + + keyClick(Qt.Key_Up) + compare(importFromDevicePageConnectBtn.focus, true) + + keyClick(Qt.Key_Up) + compare(pinFromDevice.focus, true) + + // Account creation in process + importFromDevicePageConnectBtn.spinnerTriggered = true + + keyClick(Qt.Key_Tab) + compare(passwordFromDevice.focus, true) + + keyClick(Qt.Key_Tab) + compare(pinFromDevice.focus, true) + + keyClick(Qt.Key_Down) + compare(passwordFromDevice.focus, true) + + keyClick(Qt.Key_Down) + compare(pinFromDevice.focus, true) + + keyClick(Qt.Key_Up) + compare(passwordFromDevice.focus, true) + + keyClick(Qt.Key_Up) + compare(pinFromDevice.focus, true) + + importFromDevicePageConnectBtn.spinnerTriggered = false + + // Go back to welcomePage + keyClick(Qt.Key_Up) + keyClick(Qt.Key_Up) + keyClick(Qt.Key_Enter) + } + + function test_importFromBackupPageKeyNavigation() { + var welcomePage = findChild(uut, "welcomePage") + var importFromBackupPage = findChild(uut, "importFromBackupPage") + + var fromBackupButton = findChild(welcomePage, "fromBackupButton") + + var passwordFromBackupEdit = findChild(importFromBackupPage, "passwordFromBackupEdit") + var importFromBackupPageBackButton = findChild(importFromBackupPage, + "importFromBackupPageBackButton") + var importFromBackupPageConnectBtn = findChild(importFromBackupPage, + "importFromBackupPageConnectBtn") + var fileImportBtn = findChild(importFromBackupPage, "fileImportBtn") + + // To importFromBackupPage + keyClick(Qt.Key_Tab) + keyClick(Qt.Key_Tab) + keyClick(Qt.Key_Tab) + keyClick(Qt.Key_Tab) + compare(fromBackupButton.focus, true) + + keyClick(Qt.Key_Enter) + compare(passwordFromBackupEdit.focus, true) + + // No filePath loaded + keyClick(Qt.Key_Tab) + compare(importFromBackupPageBackButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(fileImportBtn.focus, true) + + keyClick(Qt.Key_Tab) + compare(passwordFromBackupEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(importFromBackupPageBackButton.focus, true) + + keyClick(Qt.Key_Down) + compare(fileImportBtn.focus, true) + + keyClick(Qt.Key_Down) + compare(passwordFromBackupEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(fileImportBtn.focus, true) + + keyClick(Qt.Key_Up) + compare(importFromBackupPageBackButton.focus, true) + + keyClick(Qt.Key_Up) + compare(passwordFromBackupEdit.focus, true) + + // With filePath loaded + importFromBackupPage.filePath = "test" + + keyClick(Qt.Key_Tab) + compare(importFromBackupPageConnectBtn.focus, true) + + keyClick(Qt.Key_Tab) + compare(importFromBackupPageBackButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(fileImportBtn.focus, true) + + keyClick(Qt.Key_Tab) + compare(passwordFromBackupEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(importFromBackupPageConnectBtn.focus, true) + + keyClick(Qt.Key_Down) + compare(importFromBackupPageBackButton.focus, true) + + keyClick(Qt.Key_Down) + compare(fileImportBtn.focus, true) + + keyClick(Qt.Key_Down) + compare(passwordFromBackupEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(fileImportBtn.focus, true) + + keyClick(Qt.Key_Up) + compare(importFromBackupPageBackButton.focus, true) + + keyClick(Qt.Key_Up) + compare(importFromBackupPageConnectBtn.focus, true) + + keyClick(Qt.Key_Up) + compare(passwordFromBackupEdit.focus, true) + + // Account creation in process + importFromBackupPageConnectBtn.spinnerTriggered = true + + keyClick(Qt.Key_Tab) + compare(fileImportBtn.focus, true) + + keyClick(Qt.Key_Tab) + compare(passwordFromBackupEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(fileImportBtn.focus, true) + + keyClick(Qt.Key_Down) + compare(passwordFromBackupEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(fileImportBtn.focus, true) + + keyClick(Qt.Key_Up) + compare(passwordFromBackupEdit.focus, true) + + importFromBackupPageConnectBtn.spinnerTriggered = false + + // Go back to welcomePage + keyClick(Qt.Key_Up) + keyClick(Qt.Key_Up) + keyClick(Qt.Key_Enter) + } + + function test_connectToAccountManagerPageKeyNavigation() { + var welcomePage = findChild(uut, "welcomePage") + var connectToAccountManagerPage = findChild(uut, "connectToAccountManagerPage") + + var showAdvancedButton = findChild(welcomePage, "showAdvancedButton") + + var connectAccountManagerButton = findChild(welcomePage, "connectAccountManagerButton") + + var accountManagerEdit = findChild(connectToAccountManagerPage, "accountManagerEdit") + var usernameManagerEdit = findChild(connectToAccountManagerPage, "usernameManagerEdit") + var passwordManagerEdit = findChild(connectToAccountManagerPage, "passwordManagerEdit") + var connectToAccountManagerPageConnectBtn = findChild(connectToAccountManagerPage, + "connectToAccountManagerPageConnectBtn") + var connectToAccountManagerPageBackButton = findChild(connectToAccountManagerPage, + "connectToAccountManagerPageBackButton") + + // To connectToAccountManagerPage + keyClick(Qt.Key_Tab) + keyClick(Qt.Key_Up) + keyClick(Qt.Key_Enter) + keyClick(Qt.Key_Tab) + compare(connectAccountManagerButton.focus, true) + + keyClick(Qt.Key_Enter) + compare(accountManagerEdit.focus, true) + + // No info loaded + keyClick(Qt.Key_Tab) + compare(usernameManagerEdit.focus, true) + + keyClick(Qt.Key_Tab) + compare(passwordManagerEdit.focus, true) + + keyClick(Qt.Key_Tab) + compare(connectToAccountManagerPageBackButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(accountManagerEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(usernameManagerEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(passwordManagerEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(connectToAccountManagerPageBackButton.focus, true) + + keyClick(Qt.Key_Down) + compare(accountManagerEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(connectToAccountManagerPageBackButton.focus, true) + + keyClick(Qt.Key_Up) + compare(passwordManagerEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(usernameManagerEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(accountManagerEdit.focus, true) + + // With info loaded + accountManagerEdit.text = "test" + usernameManagerEdit.text = "test" + passwordManagerEdit.text = "test" + + keyClick(Qt.Key_Tab) + compare(usernameManagerEdit.focus, true) + + keyClick(Qt.Key_Tab) + compare(passwordManagerEdit.focus, true) + + keyClick(Qt.Key_Tab) + compare(connectToAccountManagerPageConnectBtn.focus, true) + + keyClick(Qt.Key_Tab) + compare(connectToAccountManagerPageBackButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(accountManagerEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(usernameManagerEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(passwordManagerEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(connectToAccountManagerPageConnectBtn.focus, true) + + keyClick(Qt.Key_Down) + compare(connectToAccountManagerPageBackButton.focus, true) + + keyClick(Qt.Key_Down) + compare(accountManagerEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(connectToAccountManagerPageBackButton.focus, true) + + keyClick(Qt.Key_Up) + compare(connectToAccountManagerPageConnectBtn.focus, true) + + keyClick(Qt.Key_Up) + compare(passwordManagerEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(usernameManagerEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(accountManagerEdit.focus, true) + + // Account creation in process + connectToAccountManagerPageConnectBtn.spinnerTriggered = true + + keyClick(Qt.Key_Tab) + compare(usernameManagerEdit.focus, true) + + keyClick(Qt.Key_Tab) + compare(passwordManagerEdit.focus, true) + + keyClick(Qt.Key_Tab) + compare(accountManagerEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(usernameManagerEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(passwordManagerEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(accountManagerEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(passwordManagerEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(usernameManagerEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(accountManagerEdit.focus, true) + + connectToAccountManagerPageConnectBtn.spinnerTriggered = false + + // Go back to welcomePage + keyClick(Qt.Key_Up) + keyClick(Qt.Key_Enter) + + // Hide advanced options + showAdvancedButton.clicked() + } + + function test_createSIPAccountPageKeyNavigation() { + var welcomePage = findChild(uut, "welcomePage") + var createSIPAccountPage = findChild(uut, "createSIPAccountPage") + + var showAdvancedButton = findChild(welcomePage, "showAdvancedButton") + + var newSIPAccountButton = findChild(welcomePage, "newSIPAccountButton") + + var sipServernameEdit = findChild(createSIPAccountPage, "sipServernameEdit") + var sipProxyEdit = findChild(createSIPAccountPage, "sipProxyEdit") + var sipUsernameEdit = findChild(createSIPAccountPage, "sipUsernameEdit") + var sipPasswordEdit = findChild(createSIPAccountPage, "sipPasswordEdit") + var createSIPAccountButton = findChild(createSIPAccountPage, "createSIPAccountButton") + var createSIPAccountPageBackButton = findChild(createSIPAccountPage, + "createSIPAccountPageBackButton") + + // To connectToAccountManagerPage + keyClick(Qt.Key_Tab) + keyClick(Qt.Key_Up) + keyClick(Qt.Key_Enter) + keyClick(Qt.Key_Tab) + keyClick(Qt.Key_Tab) + compare(newSIPAccountButton.focus, true) + + keyClick(Qt.Key_Enter) + compare(sipServernameEdit.focus, true) + + keyClick(Qt.Key_Tab) + compare(sipProxyEdit.focus, true) + + keyClick(Qt.Key_Tab) + compare(sipUsernameEdit.focus, true) + + keyClick(Qt.Key_Tab) + compare(sipPasswordEdit.focus, true) + + keyClick(Qt.Key_Tab) + compare(createSIPAccountButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(createSIPAccountPageBackButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(sipServernameEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(sipProxyEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(sipUsernameEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(sipPasswordEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(createSIPAccountButton.focus, true) + + keyClick(Qt.Key_Down) + compare(createSIPAccountPageBackButton.focus, true) + + keyClick(Qt.Key_Down) + compare(sipServernameEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(createSIPAccountPageBackButton.focus, true) + + keyClick(Qt.Key_Up) + compare(createSIPAccountButton.focus, true) + + keyClick(Qt.Key_Up) + compare(sipPasswordEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(sipUsernameEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(sipProxyEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(sipServernameEdit.focus, true) + + // Go back to welcomePage + keyClick(Qt.Key_Up) + keyClick(Qt.Key_Enter) + + // Hide advanced options + showAdvancedButton.clicked() + } + + function test_profilePageKeyNavigation() { + uut.clearSignalSpy() + + var controlPanelStackView = findChild(uut, "controlPanelStackView") + + var welcomePage = findChild(uut, "welcomePage") + var createAccountPage = findChild(uut, "createAccountPage") + var profilePage = findChild(uut, "profilePage") + var backupKeysPage = findChild(uut, "backupKeysPage") + + var createAccountButton = findChild(createAccountPage, "createAccountButton") + + var aliasEdit = findChild(profilePage, "aliasEdit") + var saveProfileBtn = findChild(profilePage, "saveProfileBtn") + var setAvatarWidget = findChild(profilePage, "setAvatarWidget") + var skipProfileSavingButton = findChild(profilePage, "skipProfileSavingButton") + + var photoboothImportFromFileDialog = findChild(setAvatarWidget, + "photoboothImportFromFileDialog") + var takePhotoButton = findChild(setAvatarWidget, "takePhotoButton") + var photoboothViewClearButton = findChild(setAvatarWidget, + "photoboothViewClearButton") + var photoboothViewImportButton = findChild(setAvatarWidget, + "photoboothViewImportButton") + + // WelcomePage initially + compare(controlPanelStackView.children[controlPanelStackView.currentIndex], + welcomePage) + + // Go to createAccount page + WizardViewStepModel.startAccountCreationFlow( + WizardViewStepModel.AccountCreationOption.CreateJamiAccount) + + // Go to set up password page + WizardViewStepModel.nextStep() + createAccountButton.clicked() + + // Wait until the account creation is finished + spyAccountIsReady.wait() + compare(spyAccountIsReady.count, 1) + + // Now we are in profile page + compare(controlPanelStackView.children[controlPanelStackView.currentIndex], + profilePage) + compare(aliasEdit.focus, true) + + spyAccountConfigFinalized.wait() + compare(spyAccountConfigFinalized.count, 1) + + // Navigation test + keyClick(Qt.Key_Tab) + compare(saveProfileBtn.focus, true) + + keyClick(Qt.Key_Tab) + compare(skipProfileSavingButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(takePhotoButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(photoboothViewImportButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(aliasEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(saveProfileBtn.focus, true) + + keyClick(Qt.Key_Down) + compare(skipProfileSavingButton.focus, true) + + keyClick(Qt.Key_Down) + compare(takePhotoButton.focus, true) + + keyClick(Qt.Key_Down) + compare(photoboothViewImportButton.focus, true) + + keyClick(Qt.Key_Down) + compare(aliasEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(photoboothViewImportButton.focus, true) + + keyClick(Qt.Key_Up) + compare(takePhotoButton.focus, true) + + keyClick(Qt.Key_Up) + compare(skipProfileSavingButton.focus, true) + + keyClick(Qt.Key_Up) + compare(saveProfileBtn.focus, true) + + keyClick(Qt.Key_Up) + compare(aliasEdit.focus, true) + + // Set up photo from fake JamiFileDialog imported file + spyAccountStatusChanged.clear() + photoboothViewImportButton.focusAfterFileDialogClosed = true + photoboothImportFromFileDialog.file = UtilsAdapter.toFileAbsolutepath( + "tests/qml/src/resources/png_test.png") + "/" + "png_test.png" + photoboothImportFromFileDialog.accepted() + + spyAccountStatusChanged.wait() + verify(spyAccountStatusChanged.count >= 1) + compare(photoboothViewImportButton.focus, true) + compare(photoboothViewClearButton.visible, true) + + keyClick(Qt.Key_Tab) + compare(aliasEdit.focus, true) + + keyClick(Qt.Key_Tab) + compare(saveProfileBtn.focus, true) + + keyClick(Qt.Key_Tab) + compare(skipProfileSavingButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(takePhotoButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(photoboothViewClearButton.focus, true) + + keyClick(Qt.Key_Tab) + compare(photoboothViewImportButton.focus, true) + + keyClick(Qt.Key_Down) + compare(aliasEdit.focus, true) + + keyClick(Qt.Key_Down) + compare(saveProfileBtn.focus, true) + + keyClick(Qt.Key_Down) + compare(skipProfileSavingButton.focus, true) + + keyClick(Qt.Key_Down) + compare(takePhotoButton.focus, true) + + keyClick(Qt.Key_Down) + compare(photoboothViewClearButton.focus, true) + + keyClick(Qt.Key_Down) + compare(photoboothViewImportButton.focus, true) + + keyClick(Qt.Key_Up) + compare(photoboothViewClearButton.focus, true) + + keyClick(Qt.Key_Up) + compare(takePhotoButton.focus, true) + + keyClick(Qt.Key_Up) + compare(skipProfileSavingButton.focus, true) + + keyClick(Qt.Key_Up) + compare(saveProfileBtn.focus, true) + + keyClick(Qt.Key_Up) + compare(aliasEdit.focus, true) + + keyClick(Qt.Key_Up) + compare(photoboothViewImportButton.focus, true) + + // Clear photo + keyClick(Qt.Key_Up) + compare(photoboothViewClearButton.focus, true) + keyClick(Qt.Key_Enter) + compare(takePhotoButton.focus, true) + + WizardViewStepModel.nextStep() + + var showBackup = (WizardViewStepModel.accountCreationOption === + WizardViewStepModel.AccountCreationOption.CreateJamiAccount + || WizardViewStepModel.accountCreationOption === + WizardViewStepModel.AccountCreationOption.CreateRendezVous) + && !AppSettingsManager.getValue(Settings.NeverShowMeAgain) + if (showBackup) { + compare(controlPanelStackView.children[controlPanelStackView.currentIndex], + backupKeysPage) + WizardViewStepModel.nextStep() + } + + spyCloseWizardView.wait() + compare(spyCloseWizardView.count, 1) + + AccountAdapter.deleteCurrentAccount() + + // Wait until the account removal is finished + spyAccountIsRemoved.wait() + compare(spyAccountIsRemoved.count, 1) + } + + function test_backupKeysPageNavigation() { + uut.clearSignalSpy() + + var controlPanelStackView = findChild(uut, "controlPanelStackView") + + var welcomePage = findChild(uut, "welcomePage") + var createAccountPage = findChild(uut, "createAccountPage") + var profilePage = findChild(uut, "profilePage") + var backupKeysPage = findChild(uut, "backupKeysPage") + + var createAccountButton = findChild(createAccountPage, "createAccountButton") + var skipProfileSavingButton = findChild(profilePage, "skipProfileSavingButton") + + var neverShowMeAgainSwitch = findChild(backupKeysPage, "neverShowMeAgainSwitch") + var backupKeyPageBackupBtn = findChild(backupKeysPage, "backupKeyPageBackupBtn") + var backupKeyPageSkipBackupBtn = findChild(backupKeysPage, "backupKeyPageSkipBackupBtn") + + // WelcomePage initially + compare(controlPanelStackView.children[controlPanelStackView.currentIndex], + welcomePage) + + // Go to createAccount page + WizardViewStepModel.startAccountCreationFlow( + WizardViewStepModel.AccountCreationOption.CreateJamiAccount) + + // Go to set up password page + WizardViewStepModel.nextStep() + createAccountButton.clicked() + + // Wait until the account creation is finished + spyAccountIsReady.wait() + compare(spyAccountIsReady.count, 1) + + // Now we are in profile page + compare(controlPanelStackView.children[controlPanelStackView.currentIndex], + profilePage) + spyAccountConfigFinalized.wait() + compare(spyAccountConfigFinalized.count, 1) + + skipProfileSavingButton.clicked() + + var showBackup = (WizardViewStepModel.accountCreationOption === + WizardViewStepModel.AccountCreationOption.CreateJamiAccount + || WizardViewStepModel.accountCreationOption === + WizardViewStepModel.AccountCreationOption.CreateRendezVous) + && !AppSettingsManager.getValue(Settings.NeverShowMeAgain) + if (showBackup) { + compare(controlPanelStackView.children[controlPanelStackView.currentIndex], + backupKeysPage) + + // Navigation test + compare(neverShowMeAgainSwitch.focus, true) + + keyClick(Qt.Key_Tab) + compare(backupKeyPageBackupBtn.focus, true) + + keyClick(Qt.Key_Tab) + compare(backupKeyPageSkipBackupBtn.focus, true) + + keyClick(Qt.Key_Tab) + compare(neverShowMeAgainSwitch.focus, true) + + keyClick(Qt.Key_Down) + compare(backupKeyPageBackupBtn.focus, true) + + keyClick(Qt.Key_Down) + compare(backupKeyPageSkipBackupBtn.focus, true) + + keyClick(Qt.Key_Down) + compare(neverShowMeAgainSwitch.focus, true) + + keyClick(Qt.Key_Up) + compare(backupKeyPageSkipBackupBtn.focus, true) + + keyClick(Qt.Key_Up) + compare(backupKeyPageBackupBtn.focus, true) + + keyClick(Qt.Key_Up) + compare(neverShowMeAgainSwitch.focus, true) + + WizardViewStepModel.nextStep() + } + + spyCloseWizardView.wait() + compare(spyCloseWizardView.count, 1) + + AccountAdapter.deleteCurrentAccount() + + // Wait until the account removal is finished + spyAccountIsRemoved.wait() + compare(spyAccountIsRemoved.count, 1) + } + } } -- GitLab