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 @@
// Use of this source code is governed by a BSD-style license that can be
// 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/screens/fingerprint_setup_screen.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_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/oobe_ui.h"
#include "chromeos/dbus/biod/fake_biod_client.h"
namespace chromeos {
......@@ -21,33 +19,32 @@ constexpr char kTestFingerprintDataString[] = "testFinger";
int kMaxAllowedFingerprints = 3;
chromeos::OobeUI* GetOobeUI() {
auto* host = chromeos::LoginDisplayHost::default_host();
return host ? host->GetOobeUI() : nullptr;
}
} // namespace
class FingerprintSetupTest : public InProcessBrowserTest {
class FingerprintSetupTest : public OobeBaseTest {
public:
FingerprintSetupTest() = default;
~FingerprintSetupTest() override = default;
void SetUpOnMainThread() override {
ShowLoginWizard(OobeScreen::SCREEN_TEST_NO_WINDOW);
// Enable fingerprint for testing.
quick_unlock::EnabledForTesting(true);
fingerprint_setup_screen_ = std::make_unique<FingerprintSetupScreen>(
GetOobeUI()->GetView<FingerprintSetupScreenHandler>(),
// Override the screen exit callback with our own method.
FingerprintSetupScreen* fingerprint_screen = FingerprintSetupScreen::Get(
WizardController::default_controller()->screen_manager());
fingerprint_screen->set_exit_callback_for_testing(
base::BindRepeating(&FingerprintSetupTest::OnFingerprintSetupScreenExit,
base::Unretained(this)));
InProcessBrowserTest::SetUpOnMainThread();
OobeBaseTest::SetUpOnMainThread();
}
void TearDownOnMainThread() override {
fingerprint_setup_screen_.reset();
InProcessBrowserTest::TearDownOnMainThread();
// Shows the fingerprint screen and overrides its exit callback.
void ShowFingerprintScreen() {
WizardController::default_controller()->AdvanceToScreen(
FingerprintSetupScreenView::kScreenId);
OobeScreenWaiter(FingerprintSetupScreenView::kScreenId).Wait();
}
void WaitForScreenExit() {
......@@ -87,18 +84,13 @@ class FingerprintSetupTest : public InProcessBrowserTest {
{"fingerprint-setup-impl", "fingerprintAddAnother"});
}
std::unique_ptr<FingerprintSetupScreen> fingerprint_setup_screen_;
private:
bool screen_exit_ = false;
base::OnceClosure screen_exit_callback_;
base::RepeatingClosure screen_exit_callback_;
};
IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintEnrollHalf) {
quick_unlock::EnabledForTesting(true);
fingerprint_setup_screen_->Show();
OobeScreenWaiter(FingerprintSetupScreenView::kScreenId).Wait();
ShowFingerprintScreen();
EnrollFingerprint(50);
test::OobeJS().ExpectVisiblePath({"fingerprint-setup-impl", "arc"});
......@@ -115,10 +107,8 @@ IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintEnrollHalf) {
}
IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintEnrollFull) {
quick_unlock::EnabledForTesting(true);
fingerprint_setup_screen_->Show();
ShowFingerprintScreen();
OobeScreenWaiter(FingerprintSetupScreenView::kScreenId).Wait();
EnrollFingerprint(100);
CheckCompletedEnroll();
......@@ -128,9 +118,7 @@ IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintEnrollFull) {
}
IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintEnrollLimit) {
quick_unlock::EnabledForTesting(true);
fingerprint_setup_screen_->Show();
OobeScreenWaiter(FingerprintSetupScreenView::kScreenId).Wait();
ShowFingerprintScreen();
for (int i = 0; i < kMaxAllowedFingerprints - 1; i++) {
EnrollFingerprint(100);
......@@ -148,16 +136,17 @@ IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintEnrollLimit) {
}
IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintDisabled) {
// Disable fingerprint
quick_unlock::EnabledForTesting(false);
fingerprint_setup_screen_->Show();
WizardController::default_controller()->AdvanceToScreen(
FingerprintSetupScreenView::kScreenId);
WaitForScreenExit();
}
IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintSetupScreenElements) {
quick_unlock::EnabledForTesting(true);
fingerprint_setup_screen_->Show();
OobeScreenWaiter(FingerprintSetupScreenView::kScreenId).Wait();
ShowFingerprintScreen();
test::OobeJS().CreateVisibilityWaiter(true, {"fingerprint-setup"})->Wait();
test::OobeJS().ExpectVisible("fingerprint-setup-impl");
......@@ -167,32 +156,31 @@ IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintSetupScreenElements) {
}
IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintSetupCancel) {
quick_unlock::EnabledForTesting(true);
fingerprint_setup_screen_->Show();
OobeScreenWaiter(FingerprintSetupScreenView::kScreenId).Wait();
ShowFingerprintScreen();
test::OobeJS().TapOnPath({"fingerprint-setup-impl", "skipFingerprintSetup"});
WaitForScreenExit();
}
IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintSetupNext) {
quick_unlock::EnabledForTesting(true);
fingerprint_setup_screen_->Show();
OobeScreenWaiter(FingerprintSetupScreenView::kScreenId).Wait();
ShowFingerprintScreen();
test::OobeJS().CreateVisibilityWaiter(true, {"fingerprint-setup"})->Wait();
test::OobeJS().TapOnPath(
{"fingerprint-setup-impl", "showSensorLocationButton"});
test::OobeJS()
.CreateVisibilityWaiter(true, {"fingerprint-setup-impl", "placeFinger"})
->Wait();
test::OobeJS().ExpectHiddenPath(
{"fingerprint-setup-impl", "setupFingerprint"});
}
IN_PROC_BROWSER_TEST_F(FingerprintSetupTest, FingerprintSetupLater) {
quick_unlock::EnabledForTesting(true);
fingerprint_setup_screen_->Show();
OobeScreenWaiter(FingerprintSetupScreenView::kScreenId).Wait();
ShowFingerprintScreen();
test::OobeJS().CreateVisibilityWaiter(true, {"fingerprint-setup"})->Wait();
test::OobeJS().TapOnPath(
......
......@@ -15,6 +15,11 @@ constexpr char kUserActionClose[] = "fingerprint-setup-done";
} // namespace
FingerprintSetupScreen* FingerprintSetupScreen::Get(ScreenManager* manager) {
return static_cast<FingerprintSetupScreen*>(
manager->GetScreen(FingerprintSetupScreenView::kScreenId));
}
FingerprintSetupScreen::FingerprintSetupScreen(
FingerprintSetupScreenView* view,
const base::RepeatingClosure& exit_callback)
......
......@@ -9,6 +9,7 @@
#include "base/callback.h"
#include "base/macros.h"
#include "chrome/browser/chromeos/login/screen_manager.h"
#include "chrome/browser/chromeos/login/screens/base_screen.h"
namespace chromeos {
......@@ -23,6 +24,13 @@ class FingerprintSetupScreen : public BaseScreen {
const base::RepeatingClosure& exit_callback);
~FingerprintSetupScreen() override;
static FingerprintSetupScreen* Get(ScreenManager* manager);
void set_exit_callback_for_testing(
const base::RepeatingClosure& exit_callback) {
exit_callback_ = exit_callback;
}
// BaseScreen:
void Show() 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