import { expect } from "e2e";
import { test, WEB } from "./t3.ts";

test("Skill-backed native commands follow the slash-menu setting", WEB, async ({ t3, app, screen }) => {
  await t3.project("Skills demo");
  await t3.open();
  const composer = screen.getByRole("textbox");
  await composer.waitFor({ timeout: 120_000 });
  await composer.fill("/pstac");
  await screen.getByRole("option").first().tap();
  await composer.fill("/");
  await app.screenshot("skills-on-slash");
  await composer.fill("/sandbox");
  await app.screenshot("skills-on-native-alias");

  await app.open("/settings/chat#skills-in-slash-menu");
  await screen.getByRole("switch", "Show skills in slash menu").waitFor();
  await screen.getByRole("switch", "Show skills in slash menu").tap();
  await expect(screen.getByRole("switch", "Show skills in slash menu")).not.toBeChecked();
  await app.screenshot("skills-disabled-setting");
  await app.open("/");
  await composer.waitFor({ timeout: 120_000 });
  await composer.fill("/");
  await app.screenshot("skills-off-slash");
  await composer.fill("/sandbox");
  await app.screenshot("skills-off-native-alias");
  await composer.fill("$boat");
  await screen.getByRole("option").first().tap();
  await composer.fill("$boat");
  await app.screenshot("skills-off-dollar-picker");

  await app.open("/settings/chat#skills-in-slash-menu");
  await screen.getByRole("switch", "Show skills in slash menu").waitFor();
  await screen.getByRole("switch", "Show skills in slash menu").tap();
  await expect(screen.getByRole("switch", "Show skills in slash menu")).toBeChecked();
  await app.open("/");
  await composer.waitFor({ timeout: 120_000 });
  await composer.fill("/pstac");
  await app.screenshot("skills-restored-pstack");
  await composer.fill("/sandbox");
  await app.screenshot("skills-restored-native-alias");

  await app.open("/settings/chat#skills-in-slash-menu");
  await screen.getByRole("switch", "Show skills in slash menu").waitFor();
  await screen.getByRole("switch", "Show skills in slash menu").tap();
  await expect(screen.getByRole("switch", "Show skills in slash menu")).not.toBeChecked();
  await app.open("/");
  await composer.waitFor({ timeout: 120_000 });
  await composer.fill("/pstac");
  await app.screenshot("skills-off-filtered-pstack");
  await expect(screen.getByRole("option")).toHaveCount(0);
});
