// ***********************************************************
// Diese Datei wird automatisch geladen, bevor Tests ausgeführt werden.
//
// Dies ist ein guter Platz für globale Konfigurationen
// und Änderungen, die Cypress beeinflussen.
//
// Weitere Infos: https://on.cypress.io/configuration
// ***********************************************************

// Importiere zusätzliche Befehle
import "./commands";

// Alternativ: CommonJS-Syntax verwenden
// require('./commands')

// Verstecke unnötige Logs für XHR- und Fetch-Anfragen
const app = window.top;
if (!app.document.head.querySelector("[data-hide-command-log-request]")) {
  const style = app.document.createElement("style");
  style.innerHTML = `
    .command-name-request, .command-name-xhr {
      display: none; /* Verstecke Fetch- und XHR-Logs */
    }
    .runnable-pass .collapsible-header {
      display: none; /* Verstecke den Header erfolgreicher Tests */
    }
  `;
  style.setAttribute("data-hide-command-log-request", "");
  app.document.head.appendChild(style);
}

// Globale Ereignisse für Cypress konfigurieren
Cypress.on("test:after:run", (test, runnable) => {
  // Minimiert die Logs für erfolgreiche Tests
  if (test.state === "passed") {
    runnable._testConfigBody = null; // Löscht den Test Body
  }
});

// Schließe automatisch erfolgreiche Tests in der GUI
Cypress.on("log:added", (log) => {
  if (log.state === "passed") {
    log.displayName = ""; // Versteckt Log-Details für erfolgreiche Schritte
  }
});

// Screenshot nach jedem fehlgeschlagenen Test
Cypress.on("fail", (error, runnable) => {
  cy.screenshot(`error-${runnable.title}`); // Screenshot für Fehler erstellen
  throw error; // Fehler weitergeben
});

// Logge die Dauer jedes Tests
Cypress.on("test:after:run", (test) => {
  cy.log(`Test "${test.title}" abgeschlossen in ${test.duration} ms`);
});
