3bfa54b4b3
- Nuxt 3 project with @nuxtjs/tailwindcss module - Tailwind CSS config with A0 Dark Theme design tokens (CSS custom properties) - AppHeader: sticky, logo, nav, phone, social icons, mobile burger menu - AppFooter: 4-column grid (Navigation, Kontakt, Rechtliches, Social) - HmsLogo: SVG with orange #EC6925 border - error.vue: 404 page with Seite nicht gefunden - robots.txt server route: Disallow: / - Meta: noindex, nofollow, noarchive, nosnippet - JSON-LD: LocalBusiness schema - OpenGraph tags - routeRules: SSR/CSR per route - Shared components: LoadingSkeleton, EmptyState, ErrorState, LegalContentPage, SpeakerIcon - 42 vitest tests passing - Build: 0 errors
100 lines
3.1 KiB
TypeScript
100 lines
3.1 KiB
TypeScript
import { describe, it, expect } from "vitest";
|
|
import { readFileSync } from "node:fs";
|
|
import { resolve } from "node:path";
|
|
|
|
describe("Design Tokens", () => {
|
|
const cssPath = resolve(__dirname, "../../assets/css/main.css");
|
|
const cssContent = readFileSync(cssPath, "utf-8");
|
|
|
|
it("should define --bg variable in :root", () => {
|
|
expect(cssContent).toContain("--bg: #131313");
|
|
});
|
|
|
|
it("should define --panel variable in :root", () => {
|
|
expect(cssContent).toContain("--panel: #1a1a1a");
|
|
});
|
|
|
|
it("should define --color-accent variable in :root", () => {
|
|
expect(cssContent).toContain("--color-accent: #EC6925");
|
|
});
|
|
|
|
it("should define --surface variable in :root", () => {
|
|
expect(cssContent).toContain("--surface: #212121");
|
|
});
|
|
|
|
it("should define --card variable in :root", () => {
|
|
expect(cssContent).toContain("--card: #2d2d2d");
|
|
});
|
|
|
|
it("should define --border variable in :root", () => {
|
|
expect(cssContent).toContain("--border: #444444a8");
|
|
});
|
|
|
|
it("should define --text variable in :root", () => {
|
|
expect(cssContent).toContain("--text: #ffffff");
|
|
});
|
|
|
|
it("should define --text-muted variable in :root", () => {
|
|
expect(cssContent).toContain("--text-muted: #d4d4d4");
|
|
});
|
|
|
|
it("should define radius tokens", () => {
|
|
expect(cssContent).toContain("--radius-sm: 2px");
|
|
expect(cssContent).toContain("--radius-md: 3px");
|
|
expect(cssContent).toContain("--radius-lg: 4px");
|
|
});
|
|
|
|
it("should define transition tokens", () => {
|
|
expect(cssContent).toContain("--transition-fast: 150ms ease");
|
|
});
|
|
});
|
|
|
|
describe("Tailwind Config", () => {
|
|
const configPath = resolve(__dirname, "../../tailwind.config.ts");
|
|
const configContent = readFileSync(configPath, "utf-8");
|
|
|
|
it("should extend colors with accent", () => {
|
|
expect(configContent).toContain("accent");
|
|
expect(configContent).toContain("#EC6925");
|
|
});
|
|
|
|
it("should extend colors with bg", () => {
|
|
expect(configContent).toContain('bg: "#131313"');
|
|
});
|
|
|
|
it("should extend colors with panel", () => {
|
|
expect(configContent).toContain('panel: "#1a1a1a"');
|
|
});
|
|
|
|
it("should configure Inter font family", () => {
|
|
expect(configContent).toContain("Inter");
|
|
});
|
|
});
|
|
|
|
describe("Nuxt Config", () => {
|
|
const configPath = resolve(__dirname, "../../nuxt.config.ts");
|
|
const configContent = readFileSync(configPath, "utf-8");
|
|
|
|
it("should include noindex robots meta tag", () => {
|
|
expect(configContent).toContain("noindex");
|
|
expect(configContent).toContain("nofollow");
|
|
expect(configContent).toContain("noarchive");
|
|
expect(configContent).toContain("nosnippet");
|
|
});
|
|
|
|
it("should include JSON-LD LocalBusiness script", () => {
|
|
expect(configContent).toContain("LocalBusiness");
|
|
expect(configContent).toContain("schema.org");
|
|
});
|
|
|
|
it("should include routeRules for SSR/CSR", () => {
|
|
expect(configContent).toContain("routeRules");
|
|
expect(configContent).toContain("/mietkatalog");
|
|
expect(configContent).toContain("/admin");
|
|
});
|
|
|
|
it("should include Tailwind CSS module", () => {
|
|
expect(configContent).toContain("@nuxtjs/tailwindcss");
|
|
});
|
|
});
|