2023-05-30 10:35:08 +03:00
import { test , expect } from '@playwright/test' ;
import { hosts , endpoints } from './values/test-constants' ;
import { getMultiTagRepo } from './utils/test-data-parser' ;
import { head } from 'lodash' ;
const testRepo = getMultiTagRepo ( ) ;
test . describe ( 'Repository page test' , ( ) => {
test . beforeEach ( async ( { page } ) => {
await page . addInitScript ( ( ) => {
2023-08-15 19:46:51 +03:00
window . localStorage . setItem ( 'authConfig' , '{}' ) ;
2023-05-30 10:35:08 +03:00
} ) ;
await page . goto ( ` ${ hosts . ui } /image/ ${ testRepo . repo } ` ) ;
} ) ;
test ( 'Repository page data' , async ( { page } ) => {
// check metadata
const firstTag = head ( testRepo . tags ) ;
await expect ( page . getByText ( firstTag . description ) . first ( ) ) . toBeVisible ( { timeout : 100000 } ) ;
await expect ( page . getByText ( firstTag . source ) . first ( ) ) . toBeVisible ( { timeout : 100000 } ) ;
// check tags and tags search
for ( let tag of testRepo . tags ) {
await expect ( page . getByText ( tag . tag , { exact : true } ) ) . toBeVisible ( { timeout : 100000 } ) ;
}
await page . getByText ( 'Show more' ) . first ( ) . click ( ) ;
await expect ( page . getByText ( 'linux/amd64' ) ) . toBeVisible ( { timeout : 100000 } ) ;
await page . getByPlaceholder ( 'Search tags...' ) . click ( ) ;
await page . getByPlaceholder ( 'Search tags...' ) . fill ( testRepo . tags [ 0 ] . tag ) ;
await expect ( page . getByText ( testRepo . tags [ 0 ] . tag , { exact : true } ) ) . toBeVisible ( { timeout : 100000 } ) ;
await expect ( page . getByText ( testRepo . tags [ 1 ] . tag , { exact : true } ) ) . not . toBeVisible ( { timeout : 100000 } ) ;
} ) ;
test ( 'Repository page navigation' , async ( { page } ) => {
await expect ( page . getByText ( testRepo . tags [ 0 ] . tag , { exact : true } ) ) . toBeVisible ( { timeout : 100000 } ) ;
const tagPageRequest = page . waitForRequest (
( request ) =>
request . url ( ) === ` ${ hosts . api } ${ endpoints . image ( ` ${ testRepo . repo } : ${ testRepo . tags [ 0 ] . tag } ` ) } ` &&
request . method ( ) === 'GET'
) ;
await page . getByText ( testRepo . tags [ 0 ] . tag , { exact : true } ) . click ( ) ;
await expect ( tagPageRequest ) . toBeDefined ( ) ;
const tagPageResponse = await tagPageRequest ;
expect ( tagPageResponse ) . toBeTruthy ( ) ;
await expect ( page ) . toHaveURL ( /.*\/image\/.+\/tag\/.*/ ) ;
} ) ;
} ) ;