1+ // Import the required dependencies
2+ import fs from 'fs' ;
3+ import { test , expect } from '@playwright/test' ;
4+
5+ let rawData = fs . readFileSync ( 'tests/person-tests.json' ) ;
6+ let testData = JSON . parse ( rawData ) ;
7+
8+ for ( const record of testData ) {
9+ test ( `${ record . filename } - Person Metadata Check` , async ( { page } ) => {
10+ // Arrange
11+ // N/A
12+ const baseUrl = record . url . replace ( record . filename , "" )
13+
14+ // Act
15+ /* Tak */
16+ await page . goto ( record . url ) ;
17+ const personMetadata = await page . locator ( 'id=meta-person' ) ;
18+ const personObject = await personMetadata . evaluate ( node => JSON . parse ( node . innerHTML ) ) ;
19+
20+ /* Organization */
21+ const organizationMetadata = await page . locator ( 'id=meta-organisation' ) ;
22+ const organizationObject = await organizationMetadata . evaluate ( node => JSON . parse ( node . innerHTML ) ) ;
23+
24+ /* Website */
25+ const websiteMetadata = await page . locator ( 'id=meta-website' ) ;
26+ const websiteObject = await websiteMetadata . evaluate ( node => JSON . parse ( node . innerHTML ) ) ;
27+
28+ /* Breadcrumbs */
29+ const breadcrumbsMetadata = await page . locator ( 'id=meta-breadcrumbs' ) ;
30+ const breadcrumbsObject = await breadcrumbsMetadata . evaluate ( node => JSON . parse ( node . innerHTML ) ) ;
31+
32+ // Assert
33+ /* Talk */
34+ expect ( personObject [ "@context" ] ) . toBe ( "http://schema.org" ) ;
35+ expect ( personObject [ "@type" ] ) . toBe ( "Person" ) ;
36+ expect ( personObject [ "name" ] ) . toBe ( record . title ) ;
37+ expect ( personObject [ "url" ] ) . toBe ( record . url ) ;
38+ expect ( personObject [ "description" ] ) . toBe ( record . description ) ;
39+
40+ /* Organization */
41+ expect ( organizationObject [ "@context" ] ) . toBe ( "https://schema.org" ) ;
42+ expect ( organizationObject [ "@type" ] ) . toBe ( "Organization" ) ;
43+ expect ( organizationObject [ "url" ] ) . toBe ( baseUrl ) ;
44+
45+ // Add an assertion on the logo here
46+
47+ /* Website */
48+ expect ( websiteObject [ "@context" ] ) . toBe ( "http://schema.org" ) ;
49+ expect ( websiteObject [ "@type" ] ) . toBe ( "WebSite" ) ;
50+ expect ( websiteObject [ "name" ] ) . toBe ( record . title ) ;
51+ expect ( websiteObject [ "sameAs" ] [ 0 ] ) . toBe ( "https://twitter.com/reddobowen" ) ;
52+ expect ( websiteObject [ "sameAs" ] [ 1 ] ) . toBe ( "https://github.com/CloudWithChris" ) ;
53+
54+ /* Breadcrumbs */
55+ expect ( breadcrumbsObject [ "@context" ] ) . toBe ( "https://schema.org" ) ;
56+ expect ( breadcrumbsObject [ "@type" ] ) . toBe ( "BreadcrumbList" ) ;
57+ expect ( breadcrumbsObject [ "itemListElement" ] [ 0 ] [ "item" ] ) . toBe ( baseUrl ) ;
58+ expect ( breadcrumbsObject [ "itemListElement" ] [ 0 ] [ "item" ] ) . toBe ( baseUrl ) ;
59+ expect ( breadcrumbsObject [ "itemListElement" ] [ 1 ] [ "name" ] ) . toBe ( "People" ) ;
60+ expect ( breadcrumbsObject [ "itemListElement" ] [ 2 ] [ "name" ] ) . toBe ( record . title ) ;
61+ } ) ;
62+ }
0 commit comments