seokit

Overview

Playwright SEO matchers for Next.js apps

seokit adds two Playwright matchers for page SEO contracts:

MatcherWhat it does
toHaveMetadataHTML → Next-like metadata object → compare
toHaveJsonLdJSON-LD scripts → compare
await expect(page).toHaveMetadata({
  lang: "en",
  title: /Acme/,
  description: /.+/,
  alternates: {
    canonical: "https://example.com/en",
    languages: {
      en: "https://example.com/en",
      "x-default": "https://example.com/en",
    },
  },
  robots: { index: true, follow: true },
});

await expect(page).toHaveJsonLd([{ "@type": "Organization" }]);

In scope / out of scope

In seokitUse Playwright directly
Page metadata (title, description, canonical, hreflang, robots meta)response?.ok(), status, headers
JSON-LD on HTML pagesrobots.txt / sitemap XML (see example app.seokit.spec.ts)

Next

On this page