import { assertSchema } from '@cypress/schema-tools'; import { render as testRender } from '@testing-library/react'; import mockConsole, { RestoreConsole } from 'jest-mock-console'; import React, { ReactElement } from 'react'; import { HelmetProvider } from 'react-helmet-async'; import { ArticleJsonLd, BlogJsonLd, BlogPostJsonLd, BookJsonLd, BreadcrumbJsonLd, CourseJsonLd, FAQJsonLd, LocalBusinessJsonLd, LogoJsonLd, NewsArticleJsonLd, ProductJsonLd, SitelinksSearchBoxJsonLd, SpeakableJsonLd, } from '../..'; import schemas from '../../../e2e/schema'; const render = (ui: ReactElement) => testRender(ui, { wrapper: HelmetProvider }); let restoreConsole: RestoreConsole; beforeAll(() => { restoreConsole = mockConsole('error'); }); afterAll(() => { restoreConsole(); }); test('ArticleJsonLd', () => { render( , ); const jsonLD = JSON.parse( document.querySelector('script')?.innerHTML ?? '{}', ); assertSchema(schemas)('Article', '1.0.0')(jsonLD); expect(document.documentElement).toMatchSnapshot(); }); test('NewsArticleJsonLd', () => { render( , ); const jsonLD = JSON.parse( document.querySelector('script')?.innerHTML ?? '{}', ); assertSchema(schemas)('NewsArticle', '1.0.0')(jsonLD); expect(document.documentElement).toMatchSnapshot(); }); test('BlogPostJsonLd', () => { render( , ); const jsonLD = JSON.parse( document.querySelector('script')?.innerHTML ?? '{}', ); assertSchema(schemas)('BlogPosting', '1.0.0')(jsonLD); expect(document.documentElement).toMatchSnapshot(); }); test('BlogJsonLd', () => { render( , ); const jsonLD = JSON.parse( document.querySelector('script')?.innerHTML ?? '{}', ); assertSchema(schemas)('Blog', '1.0.0')(jsonLD); expect(document.documentElement).toMatchSnapshot(); }); test('BreadcrumbJsonLd', () => { render( , ); const jsonLD = JSON.parse( document.querySelector('script')?.innerHTML ?? '{}', ); assertSchema(schemas)('Breadcrumb', '1.0.0')(jsonLD); expect(document.documentElement).toMatchSnapshot(); }); test('BookJsonLd', () => { render( , ); JSON.parse(document.querySelector('script')?.innerHTML ?? ''); expect(document.documentElement).toMatchSnapshot(); }); test('CourseJsonLd', () => { render( , ); const jsonLD = JSON.parse( document.querySelector('script')?.innerHTML ?? '{}', ); assertSchema(schemas)('Course', '1.0.0')(jsonLD); expect(document.documentElement).toMatchSnapshot(); }); test('SpeakableJsonLd', () => { render(); JSON.parse(document.querySelector('script')?.innerHTML ?? ''); expect(document.documentElement).toMatchSnapshot(); expect(() => render( , ), ).toThrowError(); }); test('LocalBusinessJsonLd', () => { render( , ); const jsonLD = JSON.parse( document.querySelector('script')?.innerHTML ?? '{}', ); assertSchema(schemas)('Local Business', '1.0.0')(jsonLD); expect(document.documentElement).toMatchSnapshot(); }); test('LogoJsonLd', () => { render( , ); const jsonLD = JSON.parse( document.querySelector('script')?.innerHTML ?? '{}', ); assertSchema(schemas)('Logo', '1.0.0')(jsonLD); expect(document.documentElement).toMatchSnapshot(); }); test('ProductJsonLd', () => { render( , ); const jsonLD = JSON.parse( document.querySelector('script')?.innerHTML ?? '{}', ); assertSchema(schemas)('Product', '1.0.0')(jsonLD); expect(document.documentElement).toMatchSnapshot(); }); test('FAQJsonLd', () => { render( , ); JSON.parse(document.querySelector('script')?.innerHTML ?? ''); expect(document.documentElement).toMatchSnapshot(); }); test('SitelinksSearchBoxJsonLd', () => { render( , ); const jsonLD = JSON.parse( document.querySelector('script')?.innerHTML ?? '{}', ); assertSchema(schemas)('SitelinksSearchBox', '1.0.0')(jsonLD); expect(document.documentElement).toMatchSnapshot(); });