Skip to content
Snippets Groups Projects
Commit 6878392a authored by Xiao Gui's avatar Xiao Gui
Browse files

bugfix: await for nehubaViewer to become availaable

parent 90a90201
No related branches found
No related tags found
No related merge requests found
......@@ -12,4 +12,25 @@
return `${kgSchema}/${kgId}`
}
}
const defaultConfig = {
timeout: 5000,
retries: 3
}
exports.retry = async (fn, { timeout = defaultConfig.timeout, retries = defaultConfig.retries } = defaultConfig) => {
let retryNo = 0
while (retryNo < retries) {
retryNo ++
try {
const result = await fn()
return result
} catch (e) {
console.warn(`fn failed, retry after ${timeout} milliseconds`)
await (() => new Promise(rs => setTimeout(rs, timeout)))()
}
}
throw new Error(`fn failed ${retries} times. Aborting.`)
}
})(typeof exports === 'undefined' ? module.exports : exports)
......@@ -3,7 +3,7 @@ const { getCommonSenseDsFilter } = require('./supplements/commonSense')
const { hasPreview } = require('./supplements/previewFile')
const path = require('path')
const fs = require('fs')
const { getIdFromFullId } = require('../../common/util')
const { getIdFromFullId, retry } = require('../../common/util')
let getPublicAccessToken
......@@ -296,27 +296,6 @@ const init = async () => {
getPublicAccessToken = getPublic
}
const defaultConfig = {
timeout: 5000,
retries: 3
}
const retry = async (fn, { timeout = defaultConfig.timeout, retries = defaultConfig.retries } = defaultConfig) => {
let retryNo = 0
while (retryNo < retries) {
retryNo ++
try {
const result = await fn()
return result
} catch (e) {
console.warn(`fn failed, retry after ${timeout} milliseconds`)
await (() => new Promise(rs => setTimeout(rs, timeout)))()
}
}
throw new Error(`fn failed ${retries} times. Aborting.`)
}
module.exports = {
getIdFromFullId,
populateSet,
......
const chromeOpts = require('../chromeOpts')
const noErrorLog = require('./noErrorLog')
const { getSelectedTemplate, getSelectedParcellation, getSelectedRegions, getCurrentNavigationState } = require('./ivApi')
const { getSelectedTemplate, getSelectedParcellation, getSelectedRegions, getCurrentNavigationState, awaitNehubaViewer } = require('./ivApi')
const { getSearchParam, wait } = require('./util')
const { URLSearchParams } = require('url')
const { waitMultiple } = require('./util')
describe('protractor works', () => {
it('protractor works', () => {
expect(true).toEqual(true)
......@@ -94,7 +96,8 @@ describe('IAV', () => {
const page = await browser.newPage()
await page.goto(`${ATLAS_URL}${searchParam}`, { waitUntil: 'networkidle2' })
await page.waitFor(500)
await awaitNehubaViewer(page)
await page.waitFor(500 * waitMultiple)
const actualNav = await getCurrentNavigationState(page)
expect(expectedNav).toEqual(actualNav)
......
const { retry } = require('../../common/datasets/util')
const { waitMultiple } = require('./util')
exports.getSelectedTemplate = (browser) => new Promise((resolve, reject) => {
browser.executeAsyncScript('let sub = window.interactiveViewer.metadata.selectedTemplateBSubject.subscribe(obj => arguments[arguments.length - 1](obj));sub.unsubscribe()')
.then(resolve)
......@@ -46,4 +49,15 @@ exports.getCurrentNavigationState = async (page) => {
return returnObj
})
}
exports.awaitNehubaViewer = async (page) => {
const getNVAvailable = () => new Promise((rs, rj) => {
page.evaluate(() => {
if (nehubaViewer) rs()
else rj()
})
})
await retry(getNVAvailable, { timeout: 500 * waitMultiple, retries: 10 })
}
\ No newline at end of file
......@@ -10,4 +10,6 @@ exports.wait = (browser) => new Promise(resolve => {
browser.sleep(1000)
.then(resolve)
})
\ No newline at end of file
})
exports.waitMultiple = process.env.WAIT_ULTIPLE || 1
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment