From da61006eb99a741ef5b4b4ff812c8d96a58ac3af Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
 <sebastien.blin@savoirfairelinux.com>
Date: Fri, 2 Dec 2022 11:12:17 -0500
Subject: [PATCH] tests: add tests to CI and start to migrate old ones

Pretty all tests are broken, but at least, forcing the CI to build
it will force people to check it.

Change-Id: I974905a893b6a53ce71890b63a01be6a791ea556
---
 extras/ci/client-qt-gnulinux/Jenkinsfile      |  120 ++
 src/app/mainview/components/ChatView.qml      |    6 +
 .../components/CreateAccountPage.qml          |    2 +
 .../components/CreateSIPAccountPage.qml       |    1 -
 .../wizardview/components/NoUsernamePopup.qml |    1 +
 tests/qml/src/tst_WizardView.qml              | 1443 +--------------
 .../{src => to_fix}/tst_ChatViewFooter.qml    |    0
 .../tst_FilesToSendContainer.qml              |    0
 .../{src => to_fix}/tst_PresenceIndicator.qml |    0
 tests/qml/to_fix/tst_WizardView.qml           | 1589 +++++++++++++++++
 10 files changed, 1739 insertions(+), 1423 deletions(-)
 create mode 100644 extras/ci/client-qt-gnulinux/Jenkinsfile
 rename tests/qml/{src => to_fix}/tst_ChatViewFooter.qml (100%)
 rename tests/qml/{src => to_fix}/tst_FilesToSendContainer.qml (100%)
 rename tests/qml/{src => to_fix}/tst_PresenceIndicator.qml (100%)
 create mode 100644 tests/qml/to_fix/tst_WizardView.qml

diff --git a/extras/ci/client-qt-gnulinux/Jenkinsfile b/extras/ci/client-qt-gnulinux/Jenkinsfile
new file mode 100644
index 000000000..006f3226d
--- /dev/null
+++ b/extras/ci/client-qt-gnulinux/Jenkinsfile
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2022 Savoir-faire Linux Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.  If not, see
+ * <https://www.gnu.org/licenses/>.
+ */
+
+// Requirements:
+// - gerrit-trigger plugin
+// - Docker plugin
+// - ansicolor plugin
+
+pipeline {
+    agent 'jami-buildmachine-04.mtl.sfl'
+
+    triggers {
+        gerrit customUrl: '',
+            gerritProjects: [
+                [branches: [[compareType: 'PLAIN', pattern: 'master']],
+                 compareType: 'PLAIN',
+                 disableStrictForbiddenFileVerification: false,
+                 pattern: 'jami-client-qt']],
+            triggerOnEvents: [
+                commentAddedContains('!build'),
+                patchsetCreated(excludeDrafts: true, excludeNoCodeChange: true,
+                    excludeTrivialRebase: true)]
+    }
+
+    options {
+        ansiColor('xterm')
+    }
+
+    parameters {
+        string(name: 'GERRIT_REFSPEC',
+                defaultValue: 'refs/heads/master',
+                description: 'The Gerrit refspec to fetch.')
+    }
+
+    def cpuCount = sh returnStdout: true, script: 'nproc || echo -n 4'
+
+    stage('SCM Checkout') {
+        deleteDir()
+        // Checkout jami-project to obtain daemon/LRC/client-qt repositories
+        sh """
+
+            git clone --depth=1 --branch=master https://${JAMI_GERRIT_URL}/jami-project
+            cd jami-project
+            # git submodule update --init daemon lrc client-qt
+            git submodule update --init daemon client-qt
+            git submodule foreach 'git checkout master'
+
+            cd client-qt
+            git fetch "https://${JAMI_GERRIT_URL}/jami-client-qt" ${GERRIT_REFSPEC}
+            git checkout FETCH_HEAD
+            git submodule update --init --recursive
+            cd ..
+        """
+        topDir = pwd() + '/jami-project'
+    }
+
+    dir (topDir) {
+        stage('Building Docker Image') {
+            docker.build('client-validation', "-f client-qt/extras/build/docker/Dockerfile.client-qt-gnulinux --no-cache .")
+        }
+
+        def jenkinsUID = sh(returnStdout: true, script: 'id -u jenkins').replaceAll("\n", '').trim()
+        def jenkinsGID = sh(returnStdout: true, script: 'id -g jenkins').replaceAll("\n", '').trim()
+        def jenkinsUser = jenkinsUID+':'+jenkinsGID
+
+        docker.image('client-validation').withRun('-t -u '+jenkinsUser+' -v '+pwd()+':/foo:rw -w /foo -e BATCH_MODE=1', '/bin/bash') {
+            container -> code:{
+                def base_cmd = 'docker exec -t '+container.id+" sh -c '"
+                def exec_cmd = { cmd -> sh base_cmd+cmd+"'" }
+
+                def dockerTopDir = '/foo'
+                def daemonDir = dockerTopDir + '/daemon'
+                def clientDir = dockerTopDir + '/client-qt'
+                def installDir = dockerTopDir + '/install'
+
+                stage('Build Client') {
+                    ansiColor('css') {
+                        exec_cmd("""
+                            cd ${clientDir}
+                            mkdir build
+                            cd build
+                            cmake .. -DCMAKE_INSTALL_PREFIX=${installDir}/client-qt \
+                                -DLIBJAMI_INCLUDE_DIR=${daemonDir}/src/jami \
+                                -DLIBJAMI_XML_INTERFACES_DIR=${daemonDir}/bin/dbus \
+                                -DCMAKE_PREFIX_PATH=/usr/lib/libqt-jami \
+                                -DENABLE_TESTS=True
+                            make -j${cpuCount}
+                            make install
+                        """)
+                    }
+                }
+
+                stage('Run Tests') {
+                    ansiColor('css') {
+                        exec_cmd("""
+                            cd ${clientDir}
+                            cd tests/qml
+                            ../../../build/tests/qml_tests
+                        """)
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/src/app/mainview/components/ChatView.qml b/src/app/mainview/components/ChatView.qml
index dfd7f73f1..31c0e7f7b 100644
--- a/src/app/mainview/components/ChatView.qml
+++ b/src/app/mainview/components/ChatView.qml
@@ -39,6 +39,12 @@ Rectangle {
     signal messagesCleared
     signal messagesLoaded
 
+     onVisibleChanged: {
+        if (visible)
+            return
+        UtilsAdapter.clearInteractionsCache(CurrentAccount.id, CurrentConversation.id)
+    }
+
     function focusChatView() {
         chatViewFooter.textInput.forceActiveFocus()
         swarmDetailsPanel.visible = false
diff --git a/src/app/wizardview/components/CreateAccountPage.qml b/src/app/wizardview/components/CreateAccountPage.qml
index 6eef4ad4f..963d6fb5f 100644
--- a/src/app/wizardview/components/CreateAccountPage.qml
+++ b/src/app/wizardview/components/CreateAccountPage.qml
@@ -246,6 +246,8 @@ Rectangle {
                 NoUsernamePopup {
                     id: popup
 
+                    objectName: "popup"
+
                     visible: false
 
                     onJoinClicked: {
diff --git a/src/app/wizardview/components/CreateSIPAccountPage.qml b/src/app/wizardview/components/CreateSIPAccountPage.qml
index 866128b52..62589639b 100644
--- a/src/app/wizardview/components/CreateSIPAccountPage.qml
+++ b/src/app/wizardview/components/CreateSIPAccountPage.qml
@@ -73,7 +73,6 @@ Rectangle {
             ColumnLayout {
                 id: createSIPAccountPageColumnLayout
 
-
                 spacing: JamiTheme.wizardViewPageLayoutSpacing
 
                 anchors.horizontalCenter: parent.horizontalCenter
diff --git a/src/app/wizardview/components/NoUsernamePopup.qml b/src/app/wizardview/components/NoUsernamePopup.qml
index 077426fc9..434affc5d 100644
--- a/src/app/wizardview/components/NoUsernamePopup.qml
+++ b/src/app/wizardview/components/NoUsernamePopup.qml
@@ -95,6 +95,7 @@ Popup {
                 Layout.alignment: Qt.AlignCenter
 
                 MaterialButton {
+                    objectName: "joinButton"
                     preferredWidth: text.contentWidth
                     textLeftPadding: JamiTheme.buttontextPadding
                     textRightPadding: JamiTheme.buttontextPadding
diff --git a/tests/qml/src/tst_WizardView.qml b/tests/qml/src/tst_WizardView.qml
index 6a4f971d3..ab7df242f 100644
--- a/tests/qml/src/tst_WizardView.qml
+++ b/tests/qml/src/tst_WizardView.qml
@@ -88,158 +88,23 @@ WizardView {
         signalName: "visibleChanged"
     }
 
-    TestCase {
-        name: "WelcomePage to different account creation page and return back"
-        when: windowShown
-
-        function test_welcomePageStepInStepOut() {
-            var controlPanelStackView = findChild(uut, "controlPanelStackView")
-
-            var welcomePage = findChild(uut, "welcomePage")
-            var createAccountPage = findChild(uut, "createAccountPage")
-            var importFromDevicePage = findChild(uut, "importFromDevicePage")
-            var importFromBackupPage = findChild(uut, "importFromBackupPage")
-            var connectToAccountManagerPage = findChild(uut, "connectToAccountManagerPage")
-            var createSIPAccountPage = findChild(uut, "createSIPAccountPage")
-
-            // WelcomePage initially
-            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
-                    welcomePage)
-
-            // Go to createAccount page
-            WizardViewStepModel.startAccountCreationFlow(
-                        WizardViewStepModel.AccountCreationOption.CreateJamiAccount)
-            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
-                    createAccountPage)
-            WizardViewStepModel.previousStep()
-            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
-                    welcomePage)
-
-            // Go to CreateRendezVous page
-            WizardViewStepModel.startAccountCreationFlow(
-                        WizardViewStepModel.AccountCreationOption.CreateRendezVous)
-            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
-                    createAccountPage)
-            WizardViewStepModel.previousStep()
-            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
-                    welcomePage)
-
-            // Go to CreateRendezVous page
-            WizardViewStepModel.startAccountCreationFlow(
-                        WizardViewStepModel.AccountCreationOption.ImportFromDevice)
-            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
-                    importFromDevicePage)
-            WizardViewStepModel.previousStep()
-            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
-                    welcomePage)
-
-            // Go to ImportFromBackup page
-            WizardViewStepModel.startAccountCreationFlow(
-                        WizardViewStepModel.AccountCreationOption.ImportFromBackup)
-            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
-                    importFromBackupPage)
-            WizardViewStepModel.previousStep()
-            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
-                    welcomePage)
-
-            // Go to ConnectToAccountManager page
-            WizardViewStepModel.startAccountCreationFlow(
-                        WizardViewStepModel.AccountCreationOption.ConnectToAccountManager)
-            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
-                    connectToAccountManagerPage)
-            WizardViewStepModel.previousStep()
-            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
-                    welcomePage)
-
-            // Go to CreateSipAccount page
-            WizardViewStepModel.startAccountCreationFlow(
-                        WizardViewStepModel.AccountCreationOption.CreateSipAccount)
-            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
-                    createSIPAccountPage)
-            WizardViewStepModel.previousStep()
-            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
-                    welcomePage)
-        }
-
-        function test_createAccountPageStepInStepOut() {
-            var controlPanelStackView = findChild(uut, "controlPanelStackView")
-            var welcomePage = findChild(uut, "welcomePage")
-            var createAccountPage = findChild(uut, "createAccountPage")
-
-            var createAccountStack = findChild(createAccountPage, "createAccountStack")
-            var passwordSetupPage = findChild(createAccountPage, "passwordSetupPage")
-            var nameRegistrationPage = findChild(createAccountPage, "nameRegistrationPage")
-
-            // WelcomePage initially
-            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
-                    welcomePage)
-
-            // Go to createAccount page
-            WizardViewStepModel.startAccountCreationFlow(
-                        WizardViewStepModel.AccountCreationOption.CreateJamiAccount)
-            compare(createAccountPage.isRendezVous, false)
-            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
-                    createAccountPage)
-            compare(createAccountStack.currentIndex, nameRegistrationPage.stackIndex)
-
-            // Go to passwordSetup page
-            WizardViewStepModel.nextStep()
-            compare(createAccountStack.currentIndex, passwordSetupPage.stackIndex)
-
-            // Back
-            WizardViewStepModel.previousStep()
-            compare(createAccountStack.currentIndex, nameRegistrationPage.stackIndex)
-            WizardViewStepModel.previousStep()
-            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
-                    welcomePage)
-
-            // Go to CreateRendezVous page (createAccount)
-            WizardViewStepModel.startAccountCreationFlow(
-                        WizardViewStepModel.AccountCreationOption.CreateRendezVous)
-            compare(createAccountPage.isRendezVous, true)
-            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
-                    createAccountPage)
-            compare(createAccountStack.currentIndex, nameRegistrationPage.stackIndex)
-
-            // Go to passwordSetup page
-            WizardViewStepModel.nextStep()
-            compare(createAccountStack.currentIndex, passwordSetupPage.stackIndex)
-
-            // Back
-            WizardViewStepModel.previousStep()
-            compare(createAccountStack.currentIndex, nameRegistrationPage.stackIndex)
-            WizardViewStepModel.previousStep()
-            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
-                    welcomePage)
-        }
-    }
-
     TestCase {
         name: "Create Jami account ui flow (no registered name)"
         when: windowShown
 
-        function test_createJamiAccountUiFlow() {
+        function test_createEmptyJamiAccountUiFlow() {
             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 usernameEdit = findChild(createAccountPage, "usernameEdit")
+            var popup = findChild(createAccountPage, "popup")
+            var joinButton = findChild(popup, "joinButton")
             var createAccountStack = findChild(createAccountPage, "createAccountStack")
-            var passwordSwitch = findChild(createAccountPage, "passwordSwitch")
-            var passwordEdit = findChild(createAccountPage, "passwordEdit")
-            var passwordConfirmEdit = findChild(createAccountPage, "passwordConfirmEdit")
-            var createAccountButton = findChild(createAccountPage, "createAccountButton")
-
-            var aliasEdit = findChild(profilePage, "aliasEdit")
-            var saveProfileBtn = findChild(profilePage, "saveProfileBtn")
-
-            var password  = "test110"
-            var aliasText = "test101"
+            var chooseUsernameButton = findChild(createAccountPage, "chooseUsernameButton")
 
             // WelcomePage initially
             compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
@@ -249,153 +114,25 @@ WizardView {
             WizardViewStepModel.startAccountCreationFlow(
                         WizardViewStepModel.AccountCreationOption.CreateJamiAccount)
             compare(createAccountStack.currentIndex, 0)
-            compare(usernameEdit.focus, true)
-
-            // Go to set up password page
-            WizardViewStepModel.nextStep()
-            compare(createAccountStack.currentIndex, 1)
-            passwordSwitch.checked = true
-            compare(passwordEdit.focus, true)
-            passwordEdit.text = password
-            passwordConfirmEdit.text = password
-            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)
-
-            aliasEdit.text = aliasText
-            saveProfileBtn.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)
-                WizardViewStepModel.nextStep()
-            }
-
-            spyCloseWizardView.wait()
-            compare(spyCloseWizardView.count, 1)
-
-            // Check alias text
-            compare(CurrentAccount.alias, aliasText)
-
-            spyAccountStatusChanged.clear()
-
-            // Check if password is set
-            compare(AccountAdapter.savePassword(LRCInstance.currentAccountId, password, "test"),
-                    true)
-
-            // Wait until the account status change is finished
-            spyAccountStatusChanged.wait()
-            verify(spyAccountStatusChanged.count >= 1)
-
-            AccountAdapter.deleteCurrentAccount()
 
-            // Wait until the account removal is finished
-            spyAccountIsRemoved.wait()
-            compare(spyAccountIsRemoved.count, 1)
-        }
-
-        function test_createRendezVousAccountUiFlow() {
-            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 usernameEdit = findChild(createAccountPage, "usernameEdit")
-            var createAccountStack = findChild(createAccountPage, "createAccountStack")
-            var passwordSwitch = findChild(createAccountPage, "passwordSwitch")
-            var passwordEdit = findChild(createAccountPage, "passwordEdit")
-            var passwordConfirmEdit = findChild(createAccountPage, "passwordConfirmEdit")
-            var createAccountButton = findChild(createAccountPage, "createAccountButton")
-
-            var aliasEdit = findChild(profilePage, "aliasEdit")
-            var saveProfileBtn = findChild(profilePage, "saveProfileBtn")
-
-            var password  = "test110"
-            var aliasText = "test101"
+            compare(usernameEdit.visible, true)
 
-            // WelcomePage initially
-            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
-                    welcomePage)
-
-            // Go to createRendezVous page
-            WizardViewStepModel.startAccountCreationFlow(
-                        WizardViewStepModel.AccountCreationOption.CreateRendezVous)
-            compare(createAccountStack.currentIndex, 0)
-            compare(usernameEdit.focus, true)
+            // This will show the popup because no username
+            compare(popup.visible, false)
+            chooseUsernameButton.clicked()
+            compare(popup.visible, true)
+            compare(joinButton.visible, true)
 
-            // Go to set up password page
-            WizardViewStepModel.nextStep()
-            compare(createAccountStack.currentIndex, 1)
-            passwordSwitch.checked = true
-            compare(passwordEdit.focus, true)
-            passwordEdit.text = password
-            passwordConfirmEdit.text = password
-            createAccountButton.clicked()
+            // Create jami account
+            joinButton.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)
 
-            // Check if it is a RendezVous acc
-            compare(CurrentAccount.isRendezVous, true)
-
-            aliasEdit.text = aliasText
-            saveProfileBtn.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)
-                WizardViewStepModel.nextStep()
-            }
-
-            spyCloseWizardView.wait()
-            compare(spyCloseWizardView.count, 1)
-
-            // Check alias text
-            compare(CurrentAccount.alias, aliasText)
-
-            spyAccountStatusChanged.clear()
-
-            // Check if password is set
-            compare(AccountAdapter.savePassword(LRCInstance.currentAccountId, password, "test"),
-                    true)
-
-            // Wait until the account status change is finished
-            spyAccountStatusChanged.wait()
-            verify(spyAccountStatusChanged.count >= 1)
-
             AccountAdapter.deleteCurrentAccount()
 
             // Wait until the account removal is finished
@@ -405,1179 +142,41 @@ WizardView {
     }
 
     TestCase {
-        name: "Create Sip account ui flow"
+        name: "Create SIP account ui flow"
         when: windowShown
 
-        function test_createSipAccountUiFlow() {
+        function test_createEmptyJamiAccountUiFlow() {
             uut.clearSignalSpy()
 
             var controlPanelStackView = findChild(uut, "controlPanelStackView")
 
             var welcomePage = findChild(uut, "welcomePage")
             var createSIPAccountPage = findChild(uut, "createSIPAccountPage")
-            var profilePage = findChild(uut, "profilePage")
 
-            var sipUsernameEdit = findChild(createSIPAccountPage, "sipUsernameEdit")
-            var sipPasswordEdit = findChild(createSIPAccountPage, "sipPasswordEdit")
             var sipServernameEdit = findChild(createSIPAccountPage, "sipServernameEdit")
-            var sipProxyEdit = findChild(createSIPAccountPage, "sipProxyEdit")
-            var createAccountButton = findChild(createSIPAccountPage, "createSIPAccountButton")
-
-            var saveProfileBtn = findChild(profilePage, "saveProfileBtn")
+            var createAccountStack = findChild(createSIPAccountPage, "createAccountStack")
+            var createSIPAccountButton = findChild(createSIPAccountPage, "createSIPAccountButton")
 
             // WelcomePage initially
             compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
                     welcomePage)
 
-            // Go to createSipAccount page
+            // Go to createAccount page
             WizardViewStepModel.startAccountCreationFlow(
                         WizardViewStepModel.AccountCreationOption.CreateSipAccount)
-            compare(sipServernameEdit.focus, true)
-
-            // Set up paras
-            var userName = "testUserName"
-            var serverName = "testServerName"
-            var password = "testPassword"
-            var proxy = "testProxy"
+            compare(createAccountStack.currentIndex, 0)
 
-            sipUsernameEdit.text = userName
-            sipPasswordEdit.text = password
-            sipServernameEdit.text = serverName
-            sipProxyEdit.text = proxy
+            compare(sipServernameEdit.visible, true)
 
-            createAccountButton.clicked()
+            // Create SIP Account
+            createSIPAccountButton.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)
-
-            // Check if paras match with setup
-            compare(CurrentAccount.routeset, proxy)
-            compare(CurrentAccount.username, userName)
-            compare(CurrentAccount.hostname, serverName)
-            compare(CurrentAccount.password, password)
-
-            WizardViewStepModel.nextStep()
-
-            spyCloseWizardView.wait()
-            compare(spyCloseWizardView.count, 1)
-
-            AccountAdapter.deleteCurrentAccount()
-
-            // Wait until the account removal is finished
-            spyAccountIsRemoved.wait()
-            compare(spyAccountIsRemoved.count, 1)
-        }
-    }
-
-    TestCase {
-        name: "Create Jami account from backup ui flow"
-        when: windowShown
-
-        function test_createJamiAccountFromBackupUiFlow() {
-            uut.clearSignalSpy()
-
-            var controlPanelStackView = findChild(uut, "controlPanelStackView")
-
-            var welcomePage = findChild(uut, "welcomePage")
-            var importFromBackupPage = findChild(uut, "importFromBackupPage")
-            var profilePage = findChild(uut, "profilePage")
-
-            var passwordFromBackupEdit = findChild(importFromBackupPage, "passwordFromBackupEdit")
-            var connectBtn = findChild(importFromBackupPage, "importFromBackupPageConnectBtn")
-            var errorLabel = findChild(importFromBackupPage, "errorLabel")
-            var backButton = findChild(importFromBackupPage, "importFromBackupPageBackButton")
-
-            // WelcomePage initially
-            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
-                    welcomePage)
-
-            // Go to importFromBackup page
-            WizardViewStepModel.startAccountCreationFlow(
-                        WizardViewStepModel.AccountCreationOption.ImportFromBackup)
-
-            spyBackButtonVisible.target = backButton
-
-            compare(passwordFromBackupEdit.focus, true)
-
-            var fileName = "gz_test.gz"
-            var password = "qqq"
-            importFromBackupPage.filePath = UtilsAdapter.toFileAbsolutepath(
-                        "tests/qml/src/resources/gz_test.gz") + "/" + fileName
-
-            compare(connectBtn.enabled, true)
-
-            // Create without password
-            connectBtn.clicked()
-            spyReportFailure.wait()
-            verify(spyReportFailure.count >= 1)
-            spyBackButtonVisible.wait()
-            verify(spyBackButtonVisible.count >= 2)
-            spyBackButtonVisible.clear()
-
-            compare(importFromBackupPage.errorText, JamiStrings.errorCreateAccount)
-            compare(errorLabel.visible, true)
-
-            // Recreate with password
-            passwordFromBackupEdit.text = password
-            connectBtn.clicked()
-
-            // Wait until the account creation is finished
-            spyAccountIsReady.wait()
-            compare(spyAccountIsReady.count, 1)
             spyAccountConfigFinalized.wait()
             compare(spyAccountConfigFinalized.count, 1)
-            spyCloseWizardView.wait()
-            compare(spyCloseWizardView.count, 1)
-
-            AccountAdapter.deleteCurrentAccount()
-
-            // Wait until the account removal is finished
-            spyAccountIsRemoved.wait()
-            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() {
-            uut.clearSignalSpy()
-
-            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_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)
-
-            passwordEdit.text = ""
-            passwordConfirmEdit.text = ""
-
-            // Check lineEdit enter key press corrspond correctly
-            keyClick(Qt.Key_Tab)
-            keyClick(Qt.Key_Enter)
-            keyClick(Qt.Key_Enter)
-            compare(passwordConfirmEdit.focus, true)
-
-            passwordEdit.text = "test"
-            passwordConfirmEdit.text = "test"
-
-            keyClick(Qt.Key_Enter)
-
-            // Wait until the account creation is finished
-            spyAccountIsReady.wait()
-            compare(spyAccountIsReady.count, 1)
-
-            // Go back to welcomePage
-            WizardViewStepModel.nextStep()
-
-            var showBackup = (WizardViewStepModel.accountCreationOption ===
-                              WizardViewStepModel.AccountCreationOption.CreateJamiAccount
-                              || WizardViewStepModel.accountCreationOption ===
-                              WizardViewStepModel.AccountCreationOption.CreateRendezVous)
-                              && !AppSettingsManager.getValue(Settings.NeverShowMeAgain)
-            if (showBackup) {
-                WizardViewStepModel.nextStep()
-            }
-
-            spyAccountConfigFinalized.wait()
-            compare(spyAccountConfigFinalized.count, 1)
-
-            spyCloseWizardView.wait()
-            compare(spyCloseWizardView.count, 1)
-
-            AccountAdapter.deleteCurrentAccount()
-
-            // Wait until the account removal is finished
-            spyAccountIsRemoved.wait()
-            compare(spyAccountIsRemoved.count, 1)
-        }
-
-        function test_importFromDevicePageKeyNavigation() {
-            uut.clearSignalSpy()
-
-            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
-
-            // Check lineEdit enter key press corrspond correctly
-            keyClick(Qt.Key_Enter)
-            compare(pinFromDevice.focus, true)
-
-            keyClick(Qt.Key_Up)
-            keyClick(Qt.Key_Enter)
-            compare(pinFromDevice.focus, true)
-
-            pinFromDevice.text = "test"
-            keyClick(Qt.Key_Enter)
-
-            spyReportFailure.wait(15000)
-            verify(spyReportFailure.count >= 1)
-
-            // Go back to welcomePage
-            keyClick(Qt.Key_Up)
-            keyClick(Qt.Key_Up)
-            keyClick(Qt.Key_Enter)
-        }
-
-        function test_importFromBackupPageKeyNavigation() {
-            uut.clearSignalSpy()
-
-            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
-
-            // Check lineEdit enter key press corrspond correctly
-            var fileName = "gz_test.gz"
-            var wrongPassword = "ccc"
-            importFromBackupPage.filePath = UtilsAdapter.toFileAbsolutepath(
-                        "tests/qml/src/resources/gz_test.gz") + "/" + fileName
-            passwordFromBackupEdit.text = wrongPassword
-
-            keyClick(Qt.Key_Enter)
-
-            spyReportFailure.wait(15000)
-            verify(spyReportFailure.count >= 1)
-
-            // Go back to welcomePage
-            keyClick(Qt.Key_Up)
-            keyClick(Qt.Key_Up)
-            keyClick(Qt.Key_Enter)
-        }
-
-        function test_createSIPAccountPageKeyNavigation() {
-            uut.clearSignalSpy()
-
-            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)
-
-            // Check lineEdit enter key press corrspond correctly
-            keyClick(Qt.Key_Enter)
-            keyClick(Qt.Key_Enter)
-            keyClick(Qt.Key_Enter)
-            keyClick(Qt.Key_Enter)
-
-            // Wait until the account creation is finished
-            spyAccountIsReady.wait()
-            compare(spyAccountIsReady.count, 1)
-
-            spyAccountStatusChanged.wait()
-            verify(spyAccountStatusChanged.count >= 1)
-
-            WizardViewStepModel.nextStep()
-
-            spyAccountConfigFinalized.wait()
-            compare(spyAccountConfigFinalized.count, 1)
-
-            spyCloseWizardView.wait()
-            compare(spyCloseWizardView.count, 1)
-
-            AccountAdapter.deleteCurrentAccount()
-
-            // Wait until the account removal is finished
-            spyAccountIsRemoved.wait()
-            compare(spyAccountIsRemoved.count, 1)
-
-            // 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)
-
-            // Taking photo focus test
-            setAvatarWidget.isPreviewing = true
-
-            keyClick(Qt.Key_Tab)
-            compare(photoboothViewClearButton.focus, 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_Down)
-            compare(photoboothViewClearButton.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_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(photoboothViewClearButton.focus, true)
-
-            keyClick(Qt.Key_Up)
-            compare(takePhotoButton.focus, true)
-
-            setAvatarWidget.isPreviewing = false
-
-            // Check lineEdit enter key press corrspond correctly
-            var aliasName = "test"
-            aliasEdit.text = aliasName
-            spyAccountStatusChanged.clear()
-
-            keyClick(Qt.Key_Tab)
-            keyClick(Qt.Key_Tab)
-            keyClick(Qt.Key_Tab)
-            keyClick(Qt.Key_Enter)
-
-            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()
-            }
-
-            spyAccountStatusChanged.wait()
-            verify(spyAccountStatusChanged.count >= 1)
-
-            spyCloseWizardView.wait()
-            compare(spyCloseWizardView.count, 1)
-
-            // Check alias text
-            compare(CurrentAccount.alias, aliasName)
-
-            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")
-
-            // 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()
-
-            spyCloseWizardView.wait()
-            compare(spyCloseWizardView.count, 1)
 
             AccountAdapter.deleteCurrentAccount()
 
diff --git a/tests/qml/src/tst_ChatViewFooter.qml b/tests/qml/to_fix/tst_ChatViewFooter.qml
similarity index 100%
rename from tests/qml/src/tst_ChatViewFooter.qml
rename to tests/qml/to_fix/tst_ChatViewFooter.qml
diff --git a/tests/qml/src/tst_FilesToSendContainer.qml b/tests/qml/to_fix/tst_FilesToSendContainer.qml
similarity index 100%
rename from tests/qml/src/tst_FilesToSendContainer.qml
rename to tests/qml/to_fix/tst_FilesToSendContainer.qml
diff --git a/tests/qml/src/tst_PresenceIndicator.qml b/tests/qml/to_fix/tst_PresenceIndicator.qml
similarity index 100%
rename from tests/qml/src/tst_PresenceIndicator.qml
rename to tests/qml/to_fix/tst_PresenceIndicator.qml
diff --git a/tests/qml/to_fix/tst_WizardView.qml b/tests/qml/to_fix/tst_WizardView.qml
new file mode 100644
index 000000000..6a4f971d3
--- /dev/null
+++ b/tests/qml/to_fix/tst_WizardView.qml
@@ -0,0 +1,1589 @@
+/*
+ * Copyright (C) 2021-2022 Savoir-faire Linux Inc.
+ * Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ */
+
+import QtQuick
+import QtTest
+
+import net.jami.Adapters 1.1
+import net.jami.Models 1.1
+import net.jami.Constants 1.1
+import net.jami.Enums 1.1
+
+import "../../../src/app/wizardview"
+import "../../../src/app/commoncomponents"
+
+WizardView {
+    id: uut
+
+    function clearSignalSpy() {
+        spyAccountIsReady.clear()
+        spyAccountIsRemoved.clear()
+        spyAccountConfigFinalized.clear()
+        spyReportFailure.clear()
+        spyCloseWizardView.clear()
+
+        spyBackButtonVisible.target = undefined
+    }
+
+    SignalSpy {
+        id: spyAccountIsReady
+
+        target: WizardViewStepModel
+        signalName: "accountIsReady"
+    }
+
+    SignalSpy {
+        id: spyAccountIsRemoved
+
+        target: AccountAdapter
+        signalName: "accountRemoved"
+    }
+
+    SignalSpy {
+        id: spyAccountStatusChanged
+
+        target: AccountAdapter
+        signalName: "accountStatusChanged"
+    }
+
+    SignalSpy {
+        id: spyAccountConfigFinalized
+
+        target: AccountAdapter
+        signalName: "accountConfigFinalized"
+    }
+
+    SignalSpy {
+        id: spyReportFailure
+
+        target: AccountAdapter
+        signalName: "reportFailure"
+    }
+
+    SignalSpy {
+        id: spyCloseWizardView
+
+        target: WizardViewStepModel
+        signalName: "closeWizardView"
+    }
+
+    SignalSpy {
+        id: spyBackButtonVisible
+
+        signalName: "visibleChanged"
+    }
+
+    TestCase {
+        name: "WelcomePage to different account creation page and return back"
+        when: windowShown
+
+        function test_welcomePageStepInStepOut() {
+            var controlPanelStackView = findChild(uut, "controlPanelStackView")
+
+            var welcomePage = findChild(uut, "welcomePage")
+            var createAccountPage = findChild(uut, "createAccountPage")
+            var importFromDevicePage = findChild(uut, "importFromDevicePage")
+            var importFromBackupPage = findChild(uut, "importFromBackupPage")
+            var connectToAccountManagerPage = findChild(uut, "connectToAccountManagerPage")
+            var createSIPAccountPage = findChild(uut, "createSIPAccountPage")
+
+            // WelcomePage initially
+            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
+                    welcomePage)
+
+            // Go to createAccount page
+            WizardViewStepModel.startAccountCreationFlow(
+                        WizardViewStepModel.AccountCreationOption.CreateJamiAccount)
+            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
+                    createAccountPage)
+            WizardViewStepModel.previousStep()
+            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
+                    welcomePage)
+
+            // Go to CreateRendezVous page
+            WizardViewStepModel.startAccountCreationFlow(
+                        WizardViewStepModel.AccountCreationOption.CreateRendezVous)
+            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
+                    createAccountPage)
+            WizardViewStepModel.previousStep()
+            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
+                    welcomePage)
+
+            // Go to CreateRendezVous page
+            WizardViewStepModel.startAccountCreationFlow(
+                        WizardViewStepModel.AccountCreationOption.ImportFromDevice)
+            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
+                    importFromDevicePage)
+            WizardViewStepModel.previousStep()
+            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
+                    welcomePage)
+
+            // Go to ImportFromBackup page
+            WizardViewStepModel.startAccountCreationFlow(
+                        WizardViewStepModel.AccountCreationOption.ImportFromBackup)
+            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
+                    importFromBackupPage)
+            WizardViewStepModel.previousStep()
+            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
+                    welcomePage)
+
+            // Go to ConnectToAccountManager page
+            WizardViewStepModel.startAccountCreationFlow(
+                        WizardViewStepModel.AccountCreationOption.ConnectToAccountManager)
+            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
+                    connectToAccountManagerPage)
+            WizardViewStepModel.previousStep()
+            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
+                    welcomePage)
+
+            // Go to CreateSipAccount page
+            WizardViewStepModel.startAccountCreationFlow(
+                        WizardViewStepModel.AccountCreationOption.CreateSipAccount)
+            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
+                    createSIPAccountPage)
+            WizardViewStepModel.previousStep()
+            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
+                    welcomePage)
+        }
+
+        function test_createAccountPageStepInStepOut() {
+            var controlPanelStackView = findChild(uut, "controlPanelStackView")
+            var welcomePage = findChild(uut, "welcomePage")
+            var createAccountPage = findChild(uut, "createAccountPage")
+
+            var createAccountStack = findChild(createAccountPage, "createAccountStack")
+            var passwordSetupPage = findChild(createAccountPage, "passwordSetupPage")
+            var nameRegistrationPage = findChild(createAccountPage, "nameRegistrationPage")
+
+            // WelcomePage initially
+            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
+                    welcomePage)
+
+            // Go to createAccount page
+            WizardViewStepModel.startAccountCreationFlow(
+                        WizardViewStepModel.AccountCreationOption.CreateJamiAccount)
+            compare(createAccountPage.isRendezVous, false)
+            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
+                    createAccountPage)
+            compare(createAccountStack.currentIndex, nameRegistrationPage.stackIndex)
+
+            // Go to passwordSetup page
+            WizardViewStepModel.nextStep()
+            compare(createAccountStack.currentIndex, passwordSetupPage.stackIndex)
+
+            // Back
+            WizardViewStepModel.previousStep()
+            compare(createAccountStack.currentIndex, nameRegistrationPage.stackIndex)
+            WizardViewStepModel.previousStep()
+            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
+                    welcomePage)
+
+            // Go to CreateRendezVous page (createAccount)
+            WizardViewStepModel.startAccountCreationFlow(
+                        WizardViewStepModel.AccountCreationOption.CreateRendezVous)
+            compare(createAccountPage.isRendezVous, true)
+            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
+                    createAccountPage)
+            compare(createAccountStack.currentIndex, nameRegistrationPage.stackIndex)
+
+            // Go to passwordSetup page
+            WizardViewStepModel.nextStep()
+            compare(createAccountStack.currentIndex, passwordSetupPage.stackIndex)
+
+            // Back
+            WizardViewStepModel.previousStep()
+            compare(createAccountStack.currentIndex, nameRegistrationPage.stackIndex)
+            WizardViewStepModel.previousStep()
+            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
+                    welcomePage)
+        }
+    }
+
+    TestCase {
+        name: "Create Jami account ui flow (no registered name)"
+        when: windowShown
+
+        function test_createJamiAccountUiFlow() {
+            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 usernameEdit = findChild(createAccountPage, "usernameEdit")
+            var createAccountStack = findChild(createAccountPage, "createAccountStack")
+            var passwordSwitch = findChild(createAccountPage, "passwordSwitch")
+            var passwordEdit = findChild(createAccountPage, "passwordEdit")
+            var passwordConfirmEdit = findChild(createAccountPage, "passwordConfirmEdit")
+            var createAccountButton = findChild(createAccountPage, "createAccountButton")
+
+            var aliasEdit = findChild(profilePage, "aliasEdit")
+            var saveProfileBtn = findChild(profilePage, "saveProfileBtn")
+
+            var password  = "test110"
+            var aliasText = "test101"
+
+            // WelcomePage initially
+            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
+                    welcomePage)
+
+            // Go to createAccount page
+            WizardViewStepModel.startAccountCreationFlow(
+                        WizardViewStepModel.AccountCreationOption.CreateJamiAccount)
+            compare(createAccountStack.currentIndex, 0)
+            compare(usernameEdit.focus, true)
+
+            // Go to set up password page
+            WizardViewStepModel.nextStep()
+            compare(createAccountStack.currentIndex, 1)
+            passwordSwitch.checked = true
+            compare(passwordEdit.focus, true)
+            passwordEdit.text = password
+            passwordConfirmEdit.text = password
+            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)
+
+            aliasEdit.text = aliasText
+            saveProfileBtn.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)
+                WizardViewStepModel.nextStep()
+            }
+
+            spyCloseWizardView.wait()
+            compare(spyCloseWizardView.count, 1)
+
+            // Check alias text
+            compare(CurrentAccount.alias, aliasText)
+
+            spyAccountStatusChanged.clear()
+
+            // Check if password is set
+            compare(AccountAdapter.savePassword(LRCInstance.currentAccountId, password, "test"),
+                    true)
+
+            // Wait until the account status change is finished
+            spyAccountStatusChanged.wait()
+            verify(spyAccountStatusChanged.count >= 1)
+
+            AccountAdapter.deleteCurrentAccount()
+
+            // Wait until the account removal is finished
+            spyAccountIsRemoved.wait()
+            compare(spyAccountIsRemoved.count, 1)
+        }
+
+        function test_createRendezVousAccountUiFlow() {
+            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 usernameEdit = findChild(createAccountPage, "usernameEdit")
+            var createAccountStack = findChild(createAccountPage, "createAccountStack")
+            var passwordSwitch = findChild(createAccountPage, "passwordSwitch")
+            var passwordEdit = findChild(createAccountPage, "passwordEdit")
+            var passwordConfirmEdit = findChild(createAccountPage, "passwordConfirmEdit")
+            var createAccountButton = findChild(createAccountPage, "createAccountButton")
+
+            var aliasEdit = findChild(profilePage, "aliasEdit")
+            var saveProfileBtn = findChild(profilePage, "saveProfileBtn")
+
+            var password  = "test110"
+            var aliasText = "test101"
+
+            // WelcomePage initially
+            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
+                    welcomePage)
+
+            // Go to createRendezVous page
+            WizardViewStepModel.startAccountCreationFlow(
+                        WizardViewStepModel.AccountCreationOption.CreateRendezVous)
+            compare(createAccountStack.currentIndex, 0)
+            compare(usernameEdit.focus, true)
+
+            // Go to set up password page
+            WizardViewStepModel.nextStep()
+            compare(createAccountStack.currentIndex, 1)
+            passwordSwitch.checked = true
+            compare(passwordEdit.focus, true)
+            passwordEdit.text = password
+            passwordConfirmEdit.text = password
+            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)
+
+            // Check if it is a RendezVous acc
+            compare(CurrentAccount.isRendezVous, true)
+
+            aliasEdit.text = aliasText
+            saveProfileBtn.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)
+                WizardViewStepModel.nextStep()
+            }
+
+            spyCloseWizardView.wait()
+            compare(spyCloseWizardView.count, 1)
+
+            // Check alias text
+            compare(CurrentAccount.alias, aliasText)
+
+            spyAccountStatusChanged.clear()
+
+            // Check if password is set
+            compare(AccountAdapter.savePassword(LRCInstance.currentAccountId, password, "test"),
+                    true)
+
+            // Wait until the account status change is finished
+            spyAccountStatusChanged.wait()
+            verify(spyAccountStatusChanged.count >= 1)
+
+            AccountAdapter.deleteCurrentAccount()
+
+            // Wait until the account removal is finished
+            spyAccountIsRemoved.wait()
+            compare(spyAccountIsRemoved.count, 1)
+        }
+    }
+
+    TestCase {
+        name: "Create Sip account ui flow"
+        when: windowShown
+
+        function test_createSipAccountUiFlow() {
+            uut.clearSignalSpy()
+
+            var controlPanelStackView = findChild(uut, "controlPanelStackView")
+
+            var welcomePage = findChild(uut, "welcomePage")
+            var createSIPAccountPage = findChild(uut, "createSIPAccountPage")
+            var profilePage = findChild(uut, "profilePage")
+
+            var sipUsernameEdit = findChild(createSIPAccountPage, "sipUsernameEdit")
+            var sipPasswordEdit = findChild(createSIPAccountPage, "sipPasswordEdit")
+            var sipServernameEdit = findChild(createSIPAccountPage, "sipServernameEdit")
+            var sipProxyEdit = findChild(createSIPAccountPage, "sipProxyEdit")
+            var createAccountButton = findChild(createSIPAccountPage, "createSIPAccountButton")
+
+            var saveProfileBtn = findChild(profilePage, "saveProfileBtn")
+
+            // WelcomePage initially
+            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
+                    welcomePage)
+
+            // Go to createSipAccount page
+            WizardViewStepModel.startAccountCreationFlow(
+                        WizardViewStepModel.AccountCreationOption.CreateSipAccount)
+            compare(sipServernameEdit.focus, true)
+
+            // Set up paras
+            var userName = "testUserName"
+            var serverName = "testServerName"
+            var password = "testPassword"
+            var proxy = "testProxy"
+
+            sipUsernameEdit.text = userName
+            sipPasswordEdit.text = password
+            sipServernameEdit.text = serverName
+            sipProxyEdit.text = proxy
+
+            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)
+
+            // Check if paras match with setup
+            compare(CurrentAccount.routeset, proxy)
+            compare(CurrentAccount.username, userName)
+            compare(CurrentAccount.hostname, serverName)
+            compare(CurrentAccount.password, password)
+
+            WizardViewStepModel.nextStep()
+
+            spyCloseWizardView.wait()
+            compare(spyCloseWizardView.count, 1)
+
+            AccountAdapter.deleteCurrentAccount()
+
+            // Wait until the account removal is finished
+            spyAccountIsRemoved.wait()
+            compare(spyAccountIsRemoved.count, 1)
+        }
+    }
+
+    TestCase {
+        name: "Create Jami account from backup ui flow"
+        when: windowShown
+
+        function test_createJamiAccountFromBackupUiFlow() {
+            uut.clearSignalSpy()
+
+            var controlPanelStackView = findChild(uut, "controlPanelStackView")
+
+            var welcomePage = findChild(uut, "welcomePage")
+            var importFromBackupPage = findChild(uut, "importFromBackupPage")
+            var profilePage = findChild(uut, "profilePage")
+
+            var passwordFromBackupEdit = findChild(importFromBackupPage, "passwordFromBackupEdit")
+            var connectBtn = findChild(importFromBackupPage, "importFromBackupPageConnectBtn")
+            var errorLabel = findChild(importFromBackupPage, "errorLabel")
+            var backButton = findChild(importFromBackupPage, "importFromBackupPageBackButton")
+
+            // WelcomePage initially
+            compare(controlPanelStackView.children[controlPanelStackView.currentIndex],
+                    welcomePage)
+
+            // Go to importFromBackup page
+            WizardViewStepModel.startAccountCreationFlow(
+                        WizardViewStepModel.AccountCreationOption.ImportFromBackup)
+
+            spyBackButtonVisible.target = backButton
+
+            compare(passwordFromBackupEdit.focus, true)
+
+            var fileName = "gz_test.gz"
+            var password = "qqq"
+            importFromBackupPage.filePath = UtilsAdapter.toFileAbsolutepath(
+                        "tests/qml/src/resources/gz_test.gz") + "/" + fileName
+
+            compare(connectBtn.enabled, true)
+
+            // Create without password
+            connectBtn.clicked()
+            spyReportFailure.wait()
+            verify(spyReportFailure.count >= 1)
+            spyBackButtonVisible.wait()
+            verify(spyBackButtonVisible.count >= 2)
+            spyBackButtonVisible.clear()
+
+            compare(importFromBackupPage.errorText, JamiStrings.errorCreateAccount)
+            compare(errorLabel.visible, true)
+
+            // Recreate with password
+            passwordFromBackupEdit.text = password
+            connectBtn.clicked()
+
+            // Wait until the account creation is finished
+            spyAccountIsReady.wait()
+            compare(spyAccountIsReady.count, 1)
+            spyAccountConfigFinalized.wait()
+            compare(spyAccountConfigFinalized.count, 1)
+            spyCloseWizardView.wait()
+            compare(spyCloseWizardView.count, 1)
+
+            AccountAdapter.deleteCurrentAccount()
+
+            // Wait until the account removal is finished
+            spyAccountIsRemoved.wait()
+            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() {
+            uut.clearSignalSpy()
+
+            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_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)
+
+            passwordEdit.text = ""
+            passwordConfirmEdit.text = ""
+
+            // Check lineEdit enter key press corrspond correctly
+            keyClick(Qt.Key_Tab)
+            keyClick(Qt.Key_Enter)
+            keyClick(Qt.Key_Enter)
+            compare(passwordConfirmEdit.focus, true)
+
+            passwordEdit.text = "test"
+            passwordConfirmEdit.text = "test"
+
+            keyClick(Qt.Key_Enter)
+
+            // Wait until the account creation is finished
+            spyAccountIsReady.wait()
+            compare(spyAccountIsReady.count, 1)
+
+            // Go back to welcomePage
+            WizardViewStepModel.nextStep()
+
+            var showBackup = (WizardViewStepModel.accountCreationOption ===
+                              WizardViewStepModel.AccountCreationOption.CreateJamiAccount
+                              || WizardViewStepModel.accountCreationOption ===
+                              WizardViewStepModel.AccountCreationOption.CreateRendezVous)
+                              && !AppSettingsManager.getValue(Settings.NeverShowMeAgain)
+            if (showBackup) {
+                WizardViewStepModel.nextStep()
+            }
+
+            spyAccountConfigFinalized.wait()
+            compare(spyAccountConfigFinalized.count, 1)
+
+            spyCloseWizardView.wait()
+            compare(spyCloseWizardView.count, 1)
+
+            AccountAdapter.deleteCurrentAccount()
+
+            // Wait until the account removal is finished
+            spyAccountIsRemoved.wait()
+            compare(spyAccountIsRemoved.count, 1)
+        }
+
+        function test_importFromDevicePageKeyNavigation() {
+            uut.clearSignalSpy()
+
+            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
+
+            // Check lineEdit enter key press corrspond correctly
+            keyClick(Qt.Key_Enter)
+            compare(pinFromDevice.focus, true)
+
+            keyClick(Qt.Key_Up)
+            keyClick(Qt.Key_Enter)
+            compare(pinFromDevice.focus, true)
+
+            pinFromDevice.text = "test"
+            keyClick(Qt.Key_Enter)
+
+            spyReportFailure.wait(15000)
+            verify(spyReportFailure.count >= 1)
+
+            // Go back to welcomePage
+            keyClick(Qt.Key_Up)
+            keyClick(Qt.Key_Up)
+            keyClick(Qt.Key_Enter)
+        }
+
+        function test_importFromBackupPageKeyNavigation() {
+            uut.clearSignalSpy()
+
+            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
+
+            // Check lineEdit enter key press corrspond correctly
+            var fileName = "gz_test.gz"
+            var wrongPassword = "ccc"
+            importFromBackupPage.filePath = UtilsAdapter.toFileAbsolutepath(
+                        "tests/qml/src/resources/gz_test.gz") + "/" + fileName
+            passwordFromBackupEdit.text = wrongPassword
+
+            keyClick(Qt.Key_Enter)
+
+            spyReportFailure.wait(15000)
+            verify(spyReportFailure.count >= 1)
+
+            // Go back to welcomePage
+            keyClick(Qt.Key_Up)
+            keyClick(Qt.Key_Up)
+            keyClick(Qt.Key_Enter)
+        }
+
+        function test_createSIPAccountPageKeyNavigation() {
+            uut.clearSignalSpy()
+
+            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)
+
+            // Check lineEdit enter key press corrspond correctly
+            keyClick(Qt.Key_Enter)
+            keyClick(Qt.Key_Enter)
+            keyClick(Qt.Key_Enter)
+            keyClick(Qt.Key_Enter)
+
+            // Wait until the account creation is finished
+            spyAccountIsReady.wait()
+            compare(spyAccountIsReady.count, 1)
+
+            spyAccountStatusChanged.wait()
+            verify(spyAccountStatusChanged.count >= 1)
+
+            WizardViewStepModel.nextStep()
+
+            spyAccountConfigFinalized.wait()
+            compare(spyAccountConfigFinalized.count, 1)
+
+            spyCloseWizardView.wait()
+            compare(spyCloseWizardView.count, 1)
+
+            AccountAdapter.deleteCurrentAccount()
+
+            // Wait until the account removal is finished
+            spyAccountIsRemoved.wait()
+            compare(spyAccountIsRemoved.count, 1)
+
+            // 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)
+
+            // Taking photo focus test
+            setAvatarWidget.isPreviewing = true
+
+            keyClick(Qt.Key_Tab)
+            compare(photoboothViewClearButton.focus, 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_Down)
+            compare(photoboothViewClearButton.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_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(photoboothViewClearButton.focus, true)
+
+            keyClick(Qt.Key_Up)
+            compare(takePhotoButton.focus, true)
+
+            setAvatarWidget.isPreviewing = false
+
+            // Check lineEdit enter key press corrspond correctly
+            var aliasName = "test"
+            aliasEdit.text = aliasName
+            spyAccountStatusChanged.clear()
+
+            keyClick(Qt.Key_Tab)
+            keyClick(Qt.Key_Tab)
+            keyClick(Qt.Key_Tab)
+            keyClick(Qt.Key_Enter)
+
+            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()
+            }
+
+            spyAccountStatusChanged.wait()
+            verify(spyAccountStatusChanged.count >= 1)
+
+            spyCloseWizardView.wait()
+            compare(spyCloseWizardView.count, 1)
+
+            // Check alias text
+            compare(CurrentAccount.alias, aliasName)
+
+            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")
+
+            // 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()
+
+            spyCloseWizardView.wait()
+            compare(spyCloseWizardView.count, 1)
+
+            AccountAdapter.deleteCurrentAccount()
+
+            // Wait until the account removal is finished
+            spyAccountIsRemoved.wait()
+            compare(spyAccountIsRemoved.count, 1)
+        }
+    }
+}
-- 
GitLab