// Copyright 2026 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include <optional>

#include "base/test/scoped_feature_list.h"
#include "chrome/browser/glic/public/glic_enabling.h"
#include "chrome/common/webui_url_constants.h"
#include "chrome/test/base/web_ui_mocha_browser_test.h"
#include "components/skills/features.h"
#include "content/public/test/browser_test.h"

namespace {

class SkillsBrowserTest : public WebUIMochaBrowserTest {
 protected:
  SkillsBrowserTest() {
    set_test_loader_host(chrome::kChromeUISkillsHost);
    scoped_feature_list_.InitWithFeatures({features::kSkillsEnabled},
                                          {features::kSkillsWebViewV2Enabled});
  }

  void SetUpOnMainThread() override {
    WebUIMochaBrowserTest::SetUpOnMainThread();
    scoped_glic_bypass_.emplace();
  }

  void TearDownOnMainThread() override {
    scoped_glic_bypass_.reset();
    WebUIMochaBrowserTest::TearDownOnMainThread();
  }

 private:
  std::optional<glic::GlicEnabling::ScopedBypassEnablementChecksForTesting>
      scoped_glic_bypass_;
  base::test::ScopedFeatureList scoped_feature_list_;
};

class SkillsV2BrowserTest : public WebUIMochaBrowserTest {
 protected:
  SkillsV2BrowserTest() {
    set_test_loader_host(chrome::kChromeUISkillsHost);
    scoped_feature_list_.InitWithFeatures(
        {features::kSkillsEnabled, features::kSkillsWebViewV2Enabled}, {});
  }

  void SetUpOnMainThread() override {
    WebUIMochaBrowserTest::SetUpOnMainThread();
    scoped_glic_bypass_.emplace();
  }

  void TearDownOnMainThread() override {
    scoped_glic_bypass_.reset();
    WebUIMochaBrowserTest::TearDownOnMainThread();
  }

 private:
  std::optional<glic::GlicEnabling::ScopedBypassEnablementChecksForTesting>
      scoped_glic_bypass_;
  base::test::ScopedFeatureList scoped_feature_list_;
};

IN_PROC_BROWSER_TEST_F(SkillsBrowserTest, SkillsAppPage) {
  RunTest("skills/skills_test.js", "mocha.run();");
}

IN_PROC_BROWSER_TEST_F(SkillsBrowserTest, SkillsDialogAppPage) {
  RunTest("skills/skills_dialog_test.js", "mocha.run();");
}

IN_PROC_BROWSER_TEST_F(SkillsBrowserTest, UserSkillsPage) {
  RunTest("skills/user_skills_page_test.js", "mocha.run();");
}

IN_PROC_BROWSER_TEST_F(SkillsBrowserTest, DiscoverSkillsPage) {
  RunTest("skills/discover_skills_page_test.js", "mocha.run();");
}

IN_PROC_BROWSER_TEST_F(SkillsBrowserTest, SkillCard) {
  RunTest("skills/card_test.js", "mocha.run();");
}

IN_PROC_BROWSER_TEST_F(SkillsBrowserTest, SkillsCarousel) {
  RunTest("skills/carousel_test.js", "mocha.run();");
}

IN_PROC_BROWSER_TEST_F(SkillsBrowserTest, SkillsEmojiPicker) {
  RunTest("skills/skills_emoji_picker_test.js", "mocha.run();");
}

IN_PROC_BROWSER_TEST_F(SkillsV2BrowserTest, WebviewBridge) {
  RunTest("skills/webview_bridge_test.js", "mocha.run();");
}

IN_PROC_BROWSER_TEST_F(SkillsV2BrowserTest, Webview) {
  RunTest("skills/skills_webview_test.js", "mocha.run();");
}

}  // namespace
