hunk.code_window:         <td>${this.calEvent.attendees[0].name}<br /><small><a href="mailto:${
           this.calEvent.attendees[0].email
         }">${this.calEvent.attendees[0].email}</a></small></td>
         </tr>
         <tr>
           <td>${this.calEvent.language("where")}</td>
           <td>${this.getLocation()}</td>
         </tr>
         <tr>
           <td>${this.calEvent.language("notes")}</td>
           <td>${this.calEvent.description}</td>
         </tr>
  
hunk.labels: keep keep keep keep replace replace replace replace keep keep keep keep
hunk.after_edit:       ${this.getLocation()}
  
hunk.file_path: lib/emails/EventOrganizerMail.ts
hunk.type: replace
file: const opts = {
    // launch headless on CI, in browser locally
    headless: !!process.env.CI || !!process.env.PLAYWRIGHT_HEADLESS,
    collectCoverage: false, // not possible in Next.js 12
    executablePath: process.env.PLAYWRIGHT_CHROME_EXECUTABLE_PATH,
  };
  
  console.log("⚙️ Playwright options:", JSON.stringify(opts, null, 4));
  
  module.exports = {
    verbose: true,
    preset: "jest-playwright-preset",
    transform: {
      "^.+\\.ts$": "ts-jest",
    },
    testMatch: ["<rootDir>/playwright/**/*(*.)@(spec|test).[jt]s?(x)"],
    testEnvironmentOptions: {
      "jest-playwright": {
        browsers: ["chromium" /*, 'firefox', 'webkit'*/],
        exitOnPageError: false,
        launchType: "LAUNCH",
        launchOptions: {
          headless: opts.headless,
          executablePath: opts.executablePath,
        },
        contextOptions: {
          recordVideo: {
            dir: "playwright/videos",
          },
        },
        collectCoverage: opts.collectCoverage,
      },
    },
  };
  