qrcode: wait for UI update in tests event when not calling fetch (#86853)

This commit is contained in:
Corentin Sechet 2024-02-22 17:31:17 +01:00 committed by Corentin Sechet
parent 631fd54f30
commit 6fc97253ff
1 changed files with 8 additions and 11 deletions

View File

@ -28,25 +28,22 @@ const certificateWithoutValidity =
const qrcodeReaderTest = test.extend({
mock: async ({ task }, use) => {
let resolveResult = undefined
let resultPromise = new Promise((resolve) => resolveResult = resolve)
let resolveResultHandled = undefined
let scanCallback = undefined
let scanPromise = new Promise((resolve) => scanCallback = resolve)
const terminate = Symbol()
class MockBrowserQRCodeReader {
async decodeFromVideoDevice(device, element, callback) {
while(true) {
const result = await resultPromise
const result = await scanPromise
if(result === terminate) {
return
}
resultPromise = new Promise((resolve) => resolveResult = resolve)
scanPromise = new Promise((resolve) => scanCallback = resolve)
callback({ text: result })
resolveResultHandled()
}
}
}
@ -69,9 +66,8 @@ const qrcodeReaderTest = test.extend({
await use({
reader,
scan: async (text) => {
const resultHandled = new Promise((resolve) => resolveResultHandled = resolve)
resolveResult(text)
await resultHandled
scanCallback(text)
await new Promise((resolve) => setTimeout(resolve))
}
})
vi.useRealTimers()
@ -80,7 +76,8 @@ const qrcodeReaderTest = test.extend({
reader.remove()
resolveResult(terminate)
scanCallback(terminate)
window.ZXingBrowser = savedZXingBrowser
navigator.mediaDevices = undefined
window.nacl = undefined