77 lines
2.7 KiB
TypeScript
77 lines
2.7 KiB
TypeScript
|
|
import { describe, it, expect } from "vitest";
|
||
|
|
import { readFileSync } from "node:fs";
|
||
|
|
import { resolve } from "node:path";
|
||
|
|
|
||
|
|
describe("Home Page", () => {
|
||
|
|
const pagePath = resolve(__dirname, "../../pages/index.vue");
|
||
|
|
const content = readFileSync(pagePath, "utf-8");
|
||
|
|
|
||
|
|
it("should render hero with headline 'Veranstaltungstechnik'", () => {
|
||
|
|
expect(content).toContain("Veranstaltungstechnik");
|
||
|
|
expect(content).toContain('data-testid="hero-headline"');
|
||
|
|
});
|
||
|
|
|
||
|
|
it("should have CTA button linking to /mietkatalog", () => {
|
||
|
|
expect(content).toContain('to="/mietkatalog"');
|
||
|
|
expect(content).toContain("Mietkatalog");
|
||
|
|
});
|
||
|
|
|
||
|
|
it("should have CTA button linking to /kontakt", () => {
|
||
|
|
expect(content).toContain('to="/kontakt"');
|
||
|
|
expect(content).toContain("Beratung anfragen");
|
||
|
|
});
|
||
|
|
|
||
|
|
it("should display all 8 services", () => {
|
||
|
|
expect(content).toContain("Vermietung");
|
||
|
|
expect(content).toContain("Verkauf");
|
||
|
|
expect(content).toContain("Personal");
|
||
|
|
expect(content).toContain("Transport");
|
||
|
|
expect(content).toContain("Lagerung");
|
||
|
|
expect(content).toContain("Werkstatt");
|
||
|
|
expect(content).toContain("Installation");
|
||
|
|
expect(content).toContain("Booking");
|
||
|
|
});
|
||
|
|
|
||
|
|
it("should have services section with data-testid", () => {
|
||
|
|
expect(content).toContain('data-testid="services-section"');
|
||
|
|
});
|
||
|
|
|
||
|
|
it("should have speaker grid with 6 equipment types", () => {
|
||
|
|
expect(content).toContain('data-testid="speaker-grid"');
|
||
|
|
expect(content).toContain("Lautsprecher");
|
||
|
|
expect(content).toContain("Mischpulte");
|
||
|
|
expect(content).toContain("Lichtanlagen");
|
||
|
|
expect(content).toContain("Rigging");
|
||
|
|
expect(content).toContain("Traversen");
|
||
|
|
expect(content).toContain("Komplett-Setups");
|
||
|
|
});
|
||
|
|
|
||
|
|
it("should have about section with stats", () => {
|
||
|
|
expect(content).toContain('data-testid="about-section"');
|
||
|
|
expect(content).toContain('data-testid="stat-years"');
|
||
|
|
expect(content).toContain("20+");
|
||
|
|
expect(content).toContain('data-testid="stat-devices"');
|
||
|
|
expect(content).toContain("1000+");
|
||
|
|
expect(content).toContain('data-testid="stat-events"');
|
||
|
|
expect(content).toContain("500+");
|
||
|
|
});
|
||
|
|
|
||
|
|
it("should have mietkatalog CTA section", () => {
|
||
|
|
expect(content).toContain('data-testid="mietkatalog-cta"');
|
||
|
|
expect(content).toContain('data-testid="cta-mietkatalog-link"');
|
||
|
|
});
|
||
|
|
|
||
|
|
it("should use TypeScript with lang=ts", () => {
|
||
|
|
expect(content).toContain('<script setup lang="ts">');
|
||
|
|
});
|
||
|
|
|
||
|
|
it("should use Tailwind classes, no inline styles", () => {
|
||
|
|
expect(content).not.toContain('style="');
|
||
|
|
});
|
||
|
|
|
||
|
|
it("should use useHead for page title", () => {
|
||
|
|
expect(content).toContain("useHead");
|
||
|
|
expect(content).toContain("HMS Licht");
|
||
|
|
});
|
||
|
|
});
|