import { expect, browser, $ } from '@wdio/globals'
import type { RespondWithOptions } from 'webdriverio'
import { html, render } from 'lit'
const CORS_PARAMS: RespondWithOptions = {
headers: { 'Access-Control-Allow-Origin': '*' }
}
describe('WebdriverIO mock command', () => {
it('supports mocking of API requests', async () => {
const apiMock = await browser.mock('**/api/**')
apiMock
.respondOnce({ foo: 'bar' }, CORS_PARAMS)
.respondOnce('Hello World', CORS_PARAMS)
const jsonAPI = await fetch('https://api.webdriver.io/api/foo')
expect(await jsonAPI.json()).toEqual({ foo: 'bar' })
const textAPI = await fetch('https://api.webdriver.io/api/bar')
expect(await textAPI.text()).toBe('Hello World')
})
let imgMock: WebdriverIO.Mock
it('can redirect images', async () => {
imgMock = await browser.mock('https://placehold.co/**')
imgMock.redirect('https://placehold.co/600x500')
render(
html`
`,
document.body
)
await expect($('img')).toHaveSize({ width: 600, height: 500 })
})
it('shows image after clearing mock', async () => {
imgMock.restore()
render(
html`
`,
document.body
)
await expect($('img')).toHaveSize({ width: 400, height: 400 })
})
})