blob: 23dddb5ab96d21fcece4b388c42ab0730f1c0b8d [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/signin/identity_manager_factory.h"
#include "chrome/browser/signin/identity_test_environment_profile_adaptor.h"
#include "chrome/browser/signin/signin_browser_test_base.h"
#include "chrome/browser/ui/chrome_pages.h"
#include "chrome/browser/ui/signin/signin_view_controller.h"
#include "chrome/browser/ui/webui/signin/signout_confirmation/signout_confirmation_ui.h"
#include "chrome/browser/ui/webui/test_support/webui_interactive_test_mixin.h"
#include "chrome/common/webui_url_constants.h"
#include "chrome/test/base/ui_test_utils.h"
#include "chrome/test/interaction/interactive_browser_test.h"
#include "chrome/test/interaction/webcontents_interaction_test_util.h"
#include "components/sync/test/test_sync_service.h"
#include "content/public/test/browser_task_environment.h"
#include "content/public/test/browser_test.h"
#include "content/public/test/browser_test_base.h"
#include "content/public/test/test_navigation_observer.h"
#include "ui/views/widget/any_widget_observer.h"
#include "ui/views/widget/widget.h"
#include "ui/views/window/dialog_delegate.h"
class SyncSettingsInteractiveTest
: public SigninBrowserTestBaseT<
WebUiInteractiveTestMixin<InteractiveBrowserTest>> {
public:
SyncSettingsInteractiveTest() = default;
};
// TODO(crbug.com/407795729): Fix and re-enable.
IN_PROC_BROWSER_TEST_F(SyncSettingsInteractiveTest,
DISABLED_PressingSignOutButtonsSignsOutUser) {
DEFINE_LOCAL_ELEMENT_IDENTIFIER_VALUE(kFirstTabContents);
const DeepQuery turn_off_button_query = {"settings-ui",
"settings-main",
"settings-basic-page",
"settings-people-page",
"settings-sync-account-control",
"cr-button#signout-button"};
const DeepQuery drop_down_query = {"settings-ui",
"settings-main",
"settings-basic-page",
"settings-people-page",
"settings-sync-account-control",
"cr-icon-button#dropdown-arrow"};
std::unique_ptr<content::TestNavigationObserver> observer;
auto url = GURL(chrome::kChromeUISignoutConfirmationURL);
observer = std::make_unique<content::TestNavigationObserver>(url);
observer->StartWatchingNewWebContents();
RunTestSequence(
Do([&]() {
identity_test_env()->MakePrimaryAccountAvailable(
"kTestEmail@email.com", signin::ConsentLevel::kSignin);
}),
InstrumentTab(kFirstTabContents),
NavigateWebContents(kFirstTabContents, GURL(chrome::GetSettingsUrl(
chrome::kSyncSetupSubPage))),
ExecuteJsAt(kFirstTabContents, drop_down_query,
"e => e.visibility === \"hidden\""),
ExecuteJsAt(kFirstTabContents, turn_off_button_query, "e => e.click()"));
if (observer.get()) {
observer->Wait();
auto* signin_view_controller = browser()->signin_view_controller();
CHECK(signin_view_controller->ShowsModalDialog());
auto* signout_ui = SignoutConfirmationUI::GetForTesting(
signin_view_controller->GetModalDialogWebContentsForTesting());
ASSERT_TRUE(signout_ui);
signout_ui->AcceptDialogForTesting();
}
ASSERT_FALSE(identity_manager()->HasPrimaryAccountWithRefreshToken(
signin::ConsentLevel::kSignin));
}