import { defineConfig, devices } from "@playwright/test";
import dotenv from "dotenv";
import path from "path";

// .env optionnel — AI_GATEWAY_API_KEY est sourcée depuis le shell (/etc/profile.d/ai-gateway.sh).
dotenv.config({ path: path.resolve(process.cwd(), ".env") });

// Seul Chromium est installé sur ce VPS → les deux projets restent sur chromium.
// "mobile" = descripteur Pixel 5 (chromium, isMobile/hasTouch), PAS iPhone (webkit non installé).
export default defineConfig({
  testDir: "./tests",
  timeout: 180_000,
  expect: { timeout: 30_000 },
  fullyParallel: true,
  workers: process.env.PW_WORKERS ? Number(process.env.PW_WORKERS) : 3,
  retries: 0,
  reporter: [["list"], ["json", { outputFile: process.env.PW_JSON || "results/pw-report.json" }]],
  use: {
    headless: true,
    ignoreHTTPSErrors: true,
    actionTimeout: 30_000,
    navigationTimeout: 60_000,
    screenshot: "off", // captures gérées manuellement (full page) dans le spec
    trace: "off",
    video: "off",
    // Durcissement Chromium : sans --disable-gpu/--disable-dev-shm-usage, la
    // rastérisation d'un screenshot full-page sur une page très lourde
    // (home = 73 images) crashait le renderer ("Target crashed").
    launchOptions: { args: ["--disable-dev-shm-usage", "--disable-gpu", "--no-sandbox"] },
  },
  projects: [
    {
      name: "desktop",
      use: {
        ...devices["Desktop Chrome"],
        viewport: { width: 1366, height: 900 },
        launchOptions: { args: ["--disable-dev-shm-usage", "--disable-gpu", "--no-sandbox"] },
      },
    },
    {
      name: "mobile",
      use: {
        ...devices["Pixel 5"],
        launchOptions: { args: ["--disable-dev-shm-usage", "--disable-gpu", "--no-sandbox"] },
      },
    },
  ],
});
