Commit 47473f04 authored by Renato Silva's avatar Renato Silva Committed by Commit Bot

Improve Fingerprint Setup Tests

Improve the fingerprint setup tests by making OobeBaseTest
the base class of FingerprintSetupTest. OobeBaseTest waits for the
OOBE UI to be ready before any tests are run.

Tested locally.

Bug: 1009916
Change-Id: I6147a27d501ecf81f9ce15173af617afca24b3a4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1863015Reviewed-by: default avatarRoman Sorokin [CET] <rsorokin@chromium.org>
Commit-Queue: Renato Silva <rrsilva@google.com>
Cr-Commit-Position: refs/heads/master@{#714199}
parent ca5059f8
...@@ -2,15 +2,13 @@ ...@@ -2,15 +2,13 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "chrome/browser/chromeos/login/login_wizard.h"
#include "chrome/browser/chromeos/login/quick_unlock/quick_unlock_utils.h" #include "chrome/browser/chromeos/login/quick_unlock/quick_unlock_utils.h"
#include "chrome/browser/chromeos/login/screens/fingerprint_setup_screen.h" #include "chrome/browser/chromeos/login/screens/fingerprint_setup_screen.h"
#include "chrome/browser/chromeos/login/test/js_checker.h" #include "chrome/browser/chromeos/login/test/js_checker.h"
#include "chrome/browser/chromeos/login/test/oobe_base_test.h" #include "chrome/browser/chromeos/login/test/oobe_base_test.h"
#include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h" #include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h"
#include "chrome/browser/chromeos/login/ui/login_display_host.h" #include "chrome/browser/chromeos/login/wizard_controller.h"
#include "chrome/browser/ui/webui/chromeos/login/fingerprint_setup_screen_handler.h" #include "chrome/browser/ui/webui/chromeos/login/fingerprint_setup_screen_handler.h"
#include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
#include "chromeos/dbus/biod/fake_biod_client.h" #include "chromeos/dbus/biod/fake_biod_client.h"
namespace chromeos { namespace chromeos {
...@@ -21,33 +19,32 @@ constexpr char kTestFingerprintDataString[] = "testFinger"; ...@@ -21,33 +19,32 @@ constexpr char kTestFingerprintDataString[] = "testFinger";
int kMaxAllowedFingerprints = 3; int kMaxAllowedFingerprints = 3;
chromeos::OobeUI* GetOobeUI() {
auto* host = chromeos::LoginDisplayHost::default_host();
return host ? host->GetOobeUI() : nullptr;
}
} // namespace } // namespace
class FingerprintSetupTest : public InProcessBrowserTest { class FingerprintSetupTest : public OobeBaseTest {
public: public:
FingerprintSetupTest() = default; FingerprintSetupTest() = default;
~FingerprintSetupTest() override = default; ~FingerprintSetupTest() override = default;
void SetUpOnMainThread() override { void SetUpOnMainThread() override {
ShowLoginWizard(OobeScreen::SCREEN_TEST_NO_WINDOW); // Enable fingerprint for testing.
quick_unlock::EnabledForTesting(true);
fingerprint_setup_screen_ = std::make_unique<FingerprintSetupScreen>( // Override the screen exit callback with our own method.
GetOobeUI()->GetView<FingerprintSetupScreenHandler>(), FingerprintSetupScreen* fingerprint_screen = FingerprintSetupScreen::Get(
WizardController::default_controller()->screen_manager());
fingerprint_screen->set_exit_callback_for_testing(
base::BindRepeating(&FingerprintSetupTest::OnFingerprintSetupScreenExit, base::BindRepeating(&FingerprintSetupTest::OnFingerprintSetupScreenExit,
base::Unretained(this))); base::Unretained(this)));
InProcessBrowserTest::SetUpOnMainThread(); OobeBaseTest::SetUpOnMainThread();
} }
void TearDownOnMainThread() override { // Shows the fingerprint screen and overrides its exit callback.
fingerprint_setup_screen_.reset(); void ShowFingerprintScreen() {
WizardController::default_controller()->AdvanceToScreen(
InProcessBrowserTest::TearDownOnMainThread(); FingerprintSetupScreenView::kScreenId);
OobeScreenWaiter(FingerprintSetupScreenView::kScreenId).Wait();
} }
void WaitForScreenExit() { void WaitForScreenExit() {
...@@ -87,18 +84,13 @@ class FingerprintSetupTest : public InProcessBrowserTest { ...@@ -87,18 +84,13 @@ class FingerprintSetupTest : public InProcessBrowserTest {
{"fingerprint-setup-impl", "fingerprintAddAnother"}); {"fingerprint-setup-impl", "fingerprintAddAnother"});
} }
std::unique_ptr<FingerprintSetupScreen> fingerprint_setup_screen_;
private: private:
bool screen_exit_ = false; bool screen_exit_ = false;
base::RepeatingClosure screen_exit_callback_;
base::OnceClosure screen_exit_callback_;
}; };
IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintEnrollHalf) { IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintEnrollHalf) {
quick_unlock::EnabledForTesting(true); ShowFingerprintScreen();
fingerprint_setup_screen_->Show();
OobeScreenWaiter(FingerprintSetupScreenView::kScreenId).Wait();
EnrollFingerprint(50); EnrollFingerprint(50);
test::OobeJS().ExpectVisiblePath({"fingerprint-setup-impl", "arc"}); test::OobeJS().ExpectVisiblePath({"fingerprint-setup-impl", "arc"});
...@@ -115,10 +107,8 @@ IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintEnrollHalf) { ...@@ -115,10 +107,8 @@ IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintEnrollHalf) {
} }
IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintEnrollFull) { IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintEnrollFull) {
quick_unlock::EnabledForTesting(true); ShowFingerprintScreen();
fingerprint_setup_screen_->Show();
OobeScreenWaiter(FingerprintSetupScreenView::kScreenId).Wait();
EnrollFingerprint(100); EnrollFingerprint(100);
CheckCompletedEnroll(); CheckCompletedEnroll();
...@@ -128,9 +118,7 @@ IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintEnrollFull) { ...@@ -128,9 +118,7 @@ IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintEnrollFull) {
} }
IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintEnrollLimit) { IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintEnrollLimit) {
quick_unlock::EnabledForTesting(true); ShowFingerprintScreen();
fingerprint_setup_screen_->Show();
OobeScreenWaiter(FingerprintSetupScreenView::kScreenId).Wait();
for (int i = 0; i < kMaxAllowedFingerprints - 1; i++) { for (int i = 0; i < kMaxAllowedFingerprints - 1; i++) {
EnrollFingerprint(100); EnrollFingerprint(100);
...@@ -148,16 +136,17 @@ IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintEnrollLimit) { ...@@ -148,16 +136,17 @@ IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintEnrollLimit) {
} }
IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintDisabled) { IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintDisabled) {
// Disable fingerprint
quick_unlock::EnabledForTesting(false); quick_unlock::EnabledForTesting(false);
fingerprint_setup_screen_->Show();
WizardController::default_controller()->AdvanceToScreen(
FingerprintSetupScreenView::kScreenId);
WaitForScreenExit(); WaitForScreenExit();
} }
IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintSetupScreenElements) { IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintSetupScreenElements) {
quick_unlock::EnabledForTesting(true); ShowFingerprintScreen();
fingerprint_setup_screen_->Show();
OobeScreenWaiter(FingerprintSetupScreenView::kScreenId).Wait();
test::OobeJS().CreateVisibilityWaiter(true, {"fingerprint-setup"})->Wait(); test::OobeJS().CreateVisibilityWaiter(true, {"fingerprint-setup"})->Wait();
test::OobeJS().ExpectVisible("fingerprint-setup-impl"); test::OobeJS().ExpectVisible("fingerprint-setup-impl");
...@@ -167,32 +156,31 @@ IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintSetupScreenElements) { ...@@ -167,32 +156,31 @@ IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintSetupScreenElements) {
} }
IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintSetupCancel) { IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintSetupCancel) {
quick_unlock::EnabledForTesting(true); ShowFingerprintScreen();
fingerprint_setup_screen_->Show();
OobeScreenWaiter(FingerprintSetupScreenView::kScreenId).Wait();
test::OobeJS().TapOnPath({"fingerprint-setup-impl", "skipFingerprintSetup"}); test::OobeJS().TapOnPath({"fingerprint-setup-impl", "skipFingerprintSetup"});
WaitForScreenExit(); WaitForScreenExit();
} }
IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintSetupNext) { IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintSetupNext) {
quick_unlock::EnabledForTesting(true); ShowFingerprintScreen();
fingerprint_setup_screen_->Show();
OobeScreenWaiter(FingerprintSetupScreenView::kScreenId).Wait();
test::OobeJS().CreateVisibilityWaiter(true, {"fingerprint-setup"})->Wait(); test::OobeJS().CreateVisibilityWaiter(true, {"fingerprint-setup"})->Wait();
test::OobeJS().TapOnPath( test::OobeJS().TapOnPath(
{"fingerprint-setup-impl", "showSensorLocationButton"}); {"fingerprint-setup-impl", "showSensorLocationButton"});
test::OobeJS() test::OobeJS()
.CreateVisibilityWaiter(true, {"fingerprint-setup-impl", "placeFinger"}) .CreateVisibilityWaiter(true, {"fingerprint-setup-impl", "placeFinger"})
->Wait(); ->Wait();
test::OobeJS().ExpectHiddenPath( test::OobeJS().ExpectHiddenPath(
{"fingerprint-setup-impl", "setupFingerprint"}); {"fingerprint-setup-impl", "setupFingerprint"});
} }
IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintSetupLater) { IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintSetupLater) {
quick_unlock::EnabledForTesting(true); ShowFingerprintScreen();
fingerprint_setup_screen_->Show();
OobeScreenWaiter(FingerprintSetupScreenView::kScreenId).Wait();
test::OobeJS().CreateVisibilityWaiter(true, {"fingerprint-setup"})->Wait(); test::OobeJS().CreateVisibilityWaiter(true, {"fingerprint-setup"})->Wait();
test::OobeJS().TapOnPath( test::OobeJS().TapOnPath(
......
...@@ -15,6 +15,11 @@ constexpr char kUserActionClose[] = "fingerprint-setup-done"; ...@@ -15,6 +15,11 @@ constexpr char kUserActionClose[] = "fingerprint-setup-done";
} // namespace } // namespace
FingerprintSetupScreen* FingerprintSetupScreen::Get(ScreenManager* manager) {
return static_cast<FingerprintSetupScreen*>(
manager->GetScreen(FingerprintSetupScreenView::kScreenId));
}
FingerprintSetupScreen::FingerprintSetupScreen( FingerprintSetupScreen::FingerprintSetupScreen(
FingerprintSetupScreenView* view, FingerprintSetupScreenView* view,
const base::RepeatingClosure& exit_callback) const base::RepeatingClosure& exit_callback)
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "base/callback.h" #include "base/callback.h"
#include "base/macros.h" #include "base/macros.h"
#include "chrome/browser/chromeos/login/screen_manager.h"
#include "chrome/browser/chromeos/login/screens/base_screen.h" #include "chrome/browser/chromeos/login/screens/base_screen.h"
namespace chromeos { namespace chromeos {
...@@ -23,6 +24,13 @@ class FingerprintSetupScreen : public BaseScreen { ...@@ -23,6 +24,13 @@ class FingerprintSetupScreen : public BaseScreen {
const base::RepeatingClosure& exit_callback); const base::RepeatingClosure& exit_callback);
~FingerprintSetupScreen() override; ~FingerprintSetupScreen() override;
static FingerprintSetupScreen* Get(ScreenManager* manager);
void set_exit_callback_for_testing(
const base::RepeatingClosure& exit_callback) {
exit_callback_ = exit_callback;
}
// BaseScreen: // BaseScreen:
void Show() override; void Show() override;
void Hide() override; void Hide() override;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment