Stabilize more tests (#15470)
jest retries seem to be masking test failures, like the `auto-export` one (and maybe others). I turned it off for now. The `auto-export` test fails when retries are turned off. the output of this test failure was a bit unhelpful so I also improved it. Many tests have anonymous page functions.
This commit is contained in:
parent
d3955cdf51
commit
2f50f1f8c9
18 changed files with 183 additions and 189 deletions
|
@ -112,8 +112,8 @@
|
|||
"release": "6.0.1",
|
||||
"request-promise-core": "1.1.2",
|
||||
"rimraf": "2.6.3",
|
||||
"selenium-standalone": "6.17.0",
|
||||
"selenium-webdriver": "4.0.0-alpha.5",
|
||||
"selenium-standalone": "6.18.0",
|
||||
"selenium-webdriver": "4.0.0-alpha.7",
|
||||
"shell-quote": "1.7.2",
|
||||
"styled-components": "5.1.0",
|
||||
"styled-jsx-plugin-postcss": "2.0.1",
|
||||
|
|
|
@ -136,7 +136,7 @@ const TIMINGS_API = `https://next-timings.jjsweb.site/api/timings`
|
|||
{
|
||||
stdio: 'inherit',
|
||||
env: {
|
||||
JEST_RETRY_TIMES: 2,
|
||||
JEST_RETRY_TIMES: 0,
|
||||
...process.env,
|
||||
...(isAzure
|
||||
? {
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
export const config = { amp: true }
|
||||
|
||||
export default () => (
|
||||
<div>
|
||||
<p id="only-amp">Only AMP for me...</p>
|
||||
</div>
|
||||
)
|
||||
export default function Page() {
|
||||
return (
|
||||
<div>
|
||||
<p id="only-amp">Only AMP for me...</p>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -5,17 +5,17 @@ if (typeof window !== 'undefined') {
|
|||
const origWarn = window.console.warn
|
||||
const origError = window.console.error
|
||||
window.console.warn = function (...args) {
|
||||
window.caughtWarns.push(1)
|
||||
window.caughtWarns.push(args)
|
||||
origWarn(...args)
|
||||
}
|
||||
window.console.error = function (...args) {
|
||||
window.caughtWarns.push(1)
|
||||
window.caughtWarns.push(args)
|
||||
origError(...args)
|
||||
}
|
||||
window.pathnames = []
|
||||
}
|
||||
|
||||
export default () => {
|
||||
export default function Page() {
|
||||
if (typeof window !== 'undefined') {
|
||||
window.pathnames.push(window.location.pathname)
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { useRouter } from 'next/router'
|
||||
|
||||
export default () => {
|
||||
export default function Page() {
|
||||
const { query } = useRouter()
|
||||
|
||||
return <p>post: {query.post}</p>
|
||||
|
|
|
@ -81,9 +81,8 @@ describe('Auto Export', () => {
|
|||
|
||||
it('should not show hydration warning from mismatching asPath', async () => {
|
||||
const browser = await webdriver(appPort, '/zeit/cmnt-1')
|
||||
|
||||
const numCaught = await browser.eval(`window.caughtWarns.length`)
|
||||
expect(numCaught).toBe(0)
|
||||
const caughtWarns = await browser.eval(`window.caughtWarns`)
|
||||
expect(caughtWarns).toEqual([])
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1 +1,3 @@
|
|||
export default () => <p>Hello from a</p>
|
||||
export default function Page() {
|
||||
return <p>Hello from a</p>
|
||||
}
|
||||
|
|
|
@ -1 +1,3 @@
|
|||
export default () => <p>Hello from b</p>
|
||||
export default function Page() {
|
||||
return <p>Hello from b</p>
|
||||
}
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
import Link from 'next/link'
|
||||
|
||||
export default () => (
|
||||
<>
|
||||
<Link href="/a">
|
||||
<a id="to-a">Go to a</a>
|
||||
</Link>
|
||||
<Link href="/b">
|
||||
<a id="to-b">Go to b</a>
|
||||
</Link>
|
||||
</>
|
||||
)
|
||||
export default function Page() {
|
||||
return (
|
||||
<>
|
||||
<Link href="/a">
|
||||
<a id="to-a">Go to a</a>
|
||||
</Link>
|
||||
<Link href="/b">
|
||||
<a id="to-b">Go to b</a>
|
||||
</Link>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ import {
|
|||
nextBuild,
|
||||
nextStart,
|
||||
renderViaHTTP,
|
||||
waitFor,
|
||||
check,
|
||||
} from 'next-test-utils'
|
||||
import { join } from 'path'
|
||||
|
||||
|
@ -18,6 +18,7 @@ jest.setTimeout(1000 * 60 * 2)
|
|||
|
||||
let app
|
||||
let appPort
|
||||
let stderr
|
||||
const appDir = join(__dirname, '../')
|
||||
|
||||
const DUMMY_PAGE = 'export default () => null'
|
||||
|
@ -187,9 +188,10 @@ function runInvalidPagesTests(buildFn) {
|
|||
const invalidRoute = appDir + 'pages/index.js'
|
||||
try {
|
||||
await fs.outputFile(invalidRoute, DUMMY_PAGE, 'utf-8')
|
||||
const { stderr } = await buildFn(appDir)
|
||||
await expect(stderr).toMatch(
|
||||
'You cannot define a route with the same specificity as a optional catch-all route'
|
||||
await buildFn(appDir)
|
||||
await check(
|
||||
() => stderr,
|
||||
/You cannot define a route with the same specificity as a optional catch-all route/
|
||||
)
|
||||
} finally {
|
||||
await fs.unlink(invalidRoute)
|
||||
|
@ -200,9 +202,10 @@ function runInvalidPagesTests(buildFn) {
|
|||
const invalidRoute = appDir + 'pages/nested.js'
|
||||
try {
|
||||
await fs.outputFile(invalidRoute, DUMMY_PAGE, 'utf-8')
|
||||
const { stderr } = await buildFn(appDir)
|
||||
await expect(stderr).toMatch(
|
||||
'You cannot define a route with the same specificity as a optional catch-all route'
|
||||
await buildFn(appDir)
|
||||
await check(
|
||||
() => stderr,
|
||||
/You cannot define a route with the same specificity as a optional catch-all route/
|
||||
)
|
||||
} finally {
|
||||
await fs.unlink(invalidRoute)
|
||||
|
@ -213,8 +216,8 @@ function runInvalidPagesTests(buildFn) {
|
|||
const invalidRoute = appDir + 'pages/nested/[...param].js'
|
||||
try {
|
||||
await fs.outputFile(invalidRoute, DUMMY_PAGE, 'utf-8')
|
||||
const { stderr } = await buildFn(appDir)
|
||||
await expect(stderr).toMatch(/You cannot use both .+ at the same level/)
|
||||
await buildFn(appDir)
|
||||
await check(() => stderr, /You cannot use both .+ at the same level/)
|
||||
} finally {
|
||||
await fs.unlink(invalidRoute)
|
||||
}
|
||||
|
@ -224,9 +227,10 @@ function runInvalidPagesTests(buildFn) {
|
|||
const invalidRoute = appDir + 'pages/invalid/[[param]].js'
|
||||
try {
|
||||
await fs.outputFile(invalidRoute, DUMMY_PAGE, 'utf-8')
|
||||
const { stderr } = await buildFn(appDir)
|
||||
await expect(stderr).toMatch(
|
||||
'Optional route parameters are not yet supported'
|
||||
await buildFn(appDir)
|
||||
await check(
|
||||
() => stderr,
|
||||
/Optional route parameters are not yet supported/
|
||||
)
|
||||
} finally {
|
||||
await fs.unlink(invalidRoute)
|
||||
|
@ -245,14 +249,12 @@ describe('Dynamic Optional Routing', () => {
|
|||
runTests()
|
||||
|
||||
runInvalidPagesTests(async (appDir) => {
|
||||
let stderr = ''
|
||||
stderr = ''
|
||||
await launchApp(appDir, await findPort(), {
|
||||
onStderr: (msg) => {
|
||||
stderr += msg
|
||||
},
|
||||
})
|
||||
await waitFor(1000)
|
||||
return { stderr }
|
||||
})
|
||||
})
|
||||
|
||||
|
@ -272,9 +274,9 @@ describe('Dynamic Optional Routing', () => {
|
|||
|
||||
runTests()
|
||||
|
||||
runInvalidPagesTests(async (appDir) =>
|
||||
nextBuild(appDir, [], { stderr: true })
|
||||
)
|
||||
runInvalidPagesTests(async (appDir) => {
|
||||
;({ stderr } = await nextBuild(appDir, [], { stderr: true }))
|
||||
})
|
||||
|
||||
it('should fail to build when param is not explicitly defined', async () => {
|
||||
const invalidRoute = appDir + 'pages/invalid/[[...slug]].js'
|
||||
|
|
|
@ -31,7 +31,7 @@ describe('Handles an Error in _error', () => {
|
|||
|
||||
it('Handles error during client transition', async () => {
|
||||
const browser = await webdriver(port, '/')
|
||||
await browser.elementByCss('a').click()
|
||||
await browser.waitForElementByCss('a').click()
|
||||
await waitFor(1000)
|
||||
const html = await browser.eval('document.body.innerHTML')
|
||||
expect(html).toMatch(/internal server error/i)
|
||||
|
|
|
@ -3,7 +3,7 @@ import { useState } from 'react'
|
|||
|
||||
const invalidLink = 'https://vercel.com/'
|
||||
|
||||
export default () => {
|
||||
export default function Page() {
|
||||
const { query, ...router } = useRouter()
|
||||
const [isDone, setIsDone] = useState(false)
|
||||
const { method = 'push' } = query
|
||||
|
|
|
@ -30,24 +30,18 @@ jest.retryTimes(0)
|
|||
const showsError = async (pathname, regex, click = false, isWarn = false) => {
|
||||
const browser = await webdriver(appPort, pathname)
|
||||
try {
|
||||
// wait for page to be built and navigated to
|
||||
await browser.waitForElementByCss('#click-me')
|
||||
if (isWarn) {
|
||||
await browser.eval(`(function() {
|
||||
window.warnLogs = []
|
||||
var origWarn = window.console.warn
|
||||
window.console.warn = function() {
|
||||
var warnStr = ''
|
||||
for (var i = 0; i < arguments.length; i++) {
|
||||
if (i > 0) warnStr += ' ';
|
||||
warnStr += arguments[i]
|
||||
}
|
||||
window.warnLogs.push(warnStr)
|
||||
origWarn.apply(undefined, arguments)
|
||||
window.console.warn = (...args) => {
|
||||
window.warnLogs.push(args.join(' '))
|
||||
origWarn.apply(window.console, args)
|
||||
}
|
||||
})()`)
|
||||
}
|
||||
// wait for page to be built and navigated to
|
||||
await waitFor(3000)
|
||||
await browser.waitForElementByCss('#click-me')
|
||||
if (click) {
|
||||
await browser.elementByCss('#click-me').click()
|
||||
await waitFor(500)
|
||||
|
@ -70,6 +64,11 @@ const showsError = async (pathname, regex, click = false, isWarn = false) => {
|
|||
const noError = async (pathname, click = false) => {
|
||||
const browser = await webdriver(appPort, '/')
|
||||
try {
|
||||
await check(async () => {
|
||||
const appReady = await browser.eval('!!window.next.router')
|
||||
console.log('app ready: ', appReady)
|
||||
return appReady ? 'ready' : 'nope'
|
||||
}, 'ready')
|
||||
await browser.eval(`(function() {
|
||||
window.caughtErrors = []
|
||||
window.addEventListener('error', function (error) {
|
||||
|
@ -80,8 +79,6 @@ const noError = async (pathname, click = false) => {
|
|||
})
|
||||
window.next.router.replace('${pathname}')
|
||||
})()`)
|
||||
// wait for page to be built and navigated to
|
||||
await waitFor(3000)
|
||||
await browser.waitForElementByCss('#click-me')
|
||||
if (click) {
|
||||
await browser.elementByCss('#click-me').click()
|
||||
|
|
|
@ -1,12 +1,6 @@
|
|||
/* eslint-env jest */
|
||||
|
||||
import {
|
||||
nextBuild,
|
||||
nextServer,
|
||||
startApp,
|
||||
stopApp,
|
||||
waitFor,
|
||||
} from 'next-test-utils'
|
||||
import { nextBuild, nextServer, startApp, stopApp } from 'next-test-utils'
|
||||
import webdriver from 'next-webdriver'
|
||||
import { join } from 'path'
|
||||
|
||||
|
@ -46,12 +40,11 @@ describe('Query String with Encoding', () => {
|
|||
it('should have correct query on Router#push', async () => {
|
||||
const browser = await webdriver(appPort, '/')
|
||||
try {
|
||||
await waitFor(2000)
|
||||
await browser.waitForCondition('!!window.next.router')
|
||||
await browser.eval(
|
||||
`window.next.router.push({pathname:'/',query:{abc:'def\\n'}})`
|
||||
)
|
||||
await waitFor(1000)
|
||||
const text = await browser.elementByCss('#query-content').text()
|
||||
const text = await browser.waitForElementByCss('#query-content').text()
|
||||
expect(text).toBe('{"abc":"def\\n"}')
|
||||
} finally {
|
||||
await browser.close()
|
||||
|
@ -61,10 +54,8 @@ describe('Query String with Encoding', () => {
|
|||
it('should have correct query on simple client-side <Link>', async () => {
|
||||
const browser = await webdriver(appPort, '/newline')
|
||||
try {
|
||||
await waitFor(2000)
|
||||
await browser.elementByCss('#hello-lf').click()
|
||||
await waitFor(1000)
|
||||
const text = await browser.elementByCss('#query-content').text()
|
||||
await browser.waitForElementByCss('#hello-lf').click()
|
||||
const text = await browser.waitForElementByCss('#query-content').text()
|
||||
expect(text).toBe('{"another":"hello\\n"}')
|
||||
} finally {
|
||||
await browser.close()
|
||||
|
@ -74,10 +65,8 @@ describe('Query String with Encoding', () => {
|
|||
it('should have correct query on complex client-side <Link>', async () => {
|
||||
const browser = await webdriver(appPort, '/newline')
|
||||
try {
|
||||
await waitFor(2000)
|
||||
await browser.elementByCss('#hello-complex').click()
|
||||
await waitFor(1000)
|
||||
const text = await browser.elementByCss('#query-content').text()
|
||||
await browser.waitForElementByCss('#hello-complex').click()
|
||||
const text = await browser.waitForElementByCss('#query-content').text()
|
||||
expect(text).toBe('{"complex":"yes\\n"}')
|
||||
} finally {
|
||||
await browser.close()
|
||||
|
@ -99,12 +88,11 @@ describe('Query String with Encoding', () => {
|
|||
it('should have correct query on Router#push', async () => {
|
||||
const browser = await webdriver(appPort, '/')
|
||||
try {
|
||||
await waitFor(2000)
|
||||
await browser.waitForCondition('!!window.next.router')
|
||||
await browser.eval(
|
||||
`window.next.router.push({pathname:'/',query:{abc:'def '}})`
|
||||
)
|
||||
await waitFor(1000)
|
||||
const text = await browser.elementByCss('#query-content').text()
|
||||
const text = await browser.waitForElementByCss('#query-content').text()
|
||||
expect(text).toBe('{"abc":"def "}')
|
||||
} finally {
|
||||
await browser.close()
|
||||
|
@ -114,10 +102,8 @@ describe('Query String with Encoding', () => {
|
|||
it('should have correct query on simple client-side <Link>', async () => {
|
||||
const browser = await webdriver(appPort, '/space')
|
||||
try {
|
||||
await waitFor(2000)
|
||||
await browser.elementByCss('#hello-space').click()
|
||||
await waitFor(1000)
|
||||
const text = await browser.elementByCss('#query-content').text()
|
||||
await browser.waitForElementByCss('#hello-space').click()
|
||||
const text = await browser.waitForElementByCss('#query-content').text()
|
||||
expect(text).toBe('{"another":"hello "}')
|
||||
} finally {
|
||||
await browser.close()
|
||||
|
@ -127,10 +113,8 @@ describe('Query String with Encoding', () => {
|
|||
it('should have correct query on complex client-side <Link>', async () => {
|
||||
const browser = await webdriver(appPort, '/space')
|
||||
try {
|
||||
await waitFor(2000)
|
||||
await browser.elementByCss('#hello-complex').click()
|
||||
await waitFor(1000)
|
||||
const text = await browser.elementByCss('#query-content').text()
|
||||
await browser.waitForElementByCss('#hello-complex').click()
|
||||
const text = await browser.waitForElementByCss('#query-content').text()
|
||||
expect(text).toBe('{"complex":"yes "}')
|
||||
} finally {
|
||||
await browser.close()
|
||||
|
@ -152,12 +136,11 @@ describe('Query String with Encoding', () => {
|
|||
it('should have correct query on Router#push', async () => {
|
||||
const browser = await webdriver(appPort, '/')
|
||||
try {
|
||||
await waitFor(2000)
|
||||
await browser.waitForCondition('!!window.next.router')
|
||||
await browser.eval(
|
||||
`window.next.router.push({pathname:'/',query:{abc:'def%'}})`
|
||||
)
|
||||
await waitFor(1000)
|
||||
const text = await browser.elementByCss('#query-content').text()
|
||||
const text = await browser.waitForElementByCss('#query-content').text()
|
||||
expect(text).toBe('{"abc":"def%"}')
|
||||
} finally {
|
||||
await browser.close()
|
||||
|
@ -167,10 +150,8 @@ describe('Query String with Encoding', () => {
|
|||
it('should have correct query on simple client-side <Link>', async () => {
|
||||
const browser = await webdriver(appPort, '/percent')
|
||||
try {
|
||||
await waitFor(2000)
|
||||
await browser.elementByCss('#hello-percent').click()
|
||||
await waitFor(1000)
|
||||
const text = await browser.elementByCss('#query-content').text()
|
||||
await browser.waitForElementByCss('#hello-percent').click()
|
||||
const text = await browser.waitForElementByCss('#query-content').text()
|
||||
expect(text).toBe('{"another":"hello%"}')
|
||||
} finally {
|
||||
await browser.close()
|
||||
|
@ -180,10 +161,8 @@ describe('Query String with Encoding', () => {
|
|||
it('should have correct query on complex client-side <Link>', async () => {
|
||||
const browser = await webdriver(appPort, '/percent')
|
||||
try {
|
||||
await waitFor(2000)
|
||||
await browser.elementByCss('#hello-complex').click()
|
||||
await waitFor(1000)
|
||||
const text = await browser.elementByCss('#query-content').text()
|
||||
await browser.waitForElementByCss('#hello-complex').click()
|
||||
const text = await browser.waitForElementByCss('#query-content').text()
|
||||
expect(text).toBe('{"complex":"yes%"}')
|
||||
} finally {
|
||||
await browser.close()
|
||||
|
@ -205,12 +184,11 @@ describe('Query String with Encoding', () => {
|
|||
it('should have correct query on Router#push', async () => {
|
||||
const browser = await webdriver(appPort, '/')
|
||||
try {
|
||||
await waitFor(2000)
|
||||
await browser.waitForCondition('!!window.next.router')
|
||||
await browser.eval(
|
||||
`window.next.router.push({pathname:'/',query:{abc:'def+'}})`
|
||||
)
|
||||
await waitFor(1000)
|
||||
const text = await browser.elementByCss('#query-content').text()
|
||||
const text = await browser.waitForElementByCss('#query-content').text()
|
||||
expect(text).toBe('{"abc":"def+"}')
|
||||
} finally {
|
||||
await browser.close()
|
||||
|
@ -220,10 +198,8 @@ describe('Query String with Encoding', () => {
|
|||
it('should have correct query on simple client-side <Link>', async () => {
|
||||
const browser = await webdriver(appPort, '/plus')
|
||||
try {
|
||||
await waitFor(2000)
|
||||
await browser.elementByCss('#hello-plus').click()
|
||||
await waitFor(1000)
|
||||
const text = await browser.elementByCss('#query-content').text()
|
||||
await browser.waitForElementByCss('#hello-plus').click()
|
||||
const text = await browser.waitForElementByCss('#query-content').text()
|
||||
expect(text).toBe('{"another":"hello+"}')
|
||||
} finally {
|
||||
await browser.close()
|
||||
|
@ -233,10 +209,8 @@ describe('Query String with Encoding', () => {
|
|||
it('should have correct query on complex client-side <Link>', async () => {
|
||||
const browser = await webdriver(appPort, '/plus')
|
||||
try {
|
||||
await waitFor(2000)
|
||||
await browser.elementByCss('#hello-complex').click()
|
||||
await waitFor(1000)
|
||||
const text = await browser.elementByCss('#query-content').text()
|
||||
await browser.waitForElementByCss('#hello-complex').click()
|
||||
const text = await browser.waitForElementByCss('#query-content').text()
|
||||
expect(text).toBe('{"complex":"yes+"}')
|
||||
} finally {
|
||||
await browser.close()
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
import Link from 'next/link'
|
||||
|
||||
export default () => (
|
||||
<>
|
||||
<p id="another">hi from another</p>
|
||||
<Link href="/">
|
||||
<a id="to-index">to index</a>
|
||||
</Link>
|
||||
</>
|
||||
)
|
||||
export default function Page() {
|
||||
return (
|
||||
<>
|
||||
<p id="another">hi from another</p>
|
||||
<Link href="/">
|
||||
<a id="to-index">to index</a>
|
||||
</Link>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -2,9 +2,11 @@ import getConfig from 'next/config'
|
|||
|
||||
const config = getConfig()
|
||||
|
||||
export default ({ Component, pageProps }) => (
|
||||
<>
|
||||
<p id="app-config">{JSON.stringify(config)}</p>
|
||||
<Component {...pageProps} />
|
||||
</>
|
||||
)
|
||||
export default function App({ Component, pageProps }) {
|
||||
return (
|
||||
<>
|
||||
<p id="app-config">{JSON.stringify(config)}</p>
|
||||
<Component {...pageProps} />
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -92,6 +92,14 @@ export default class Chain {
|
|||
)
|
||||
}
|
||||
|
||||
waitForCondition(condition) {
|
||||
return this.updateChain(() =>
|
||||
this.browser.wait(async (driver) => {
|
||||
return driver.executeScript('return ' + condition).catch(() => false)
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
eval(snippet) {
|
||||
if (typeof snippet === 'string' && !snippet.startsWith('return')) {
|
||||
snippet = `return ${snippet}`
|
||||
|
|
130
yarn.lock
130
yarn.lock
|
@ -3917,19 +3917,21 @@ bindings@^1.5.0:
|
|||
dependencies:
|
||||
file-uri-to-path "1.0.0"
|
||||
|
||||
bl@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/bl/-/bl-2.2.0.tgz#e1a574cdf528e4053019bb800b041c0ac88da493"
|
||||
dependencies:
|
||||
readable-stream "^2.3.5"
|
||||
safe-buffer "^5.1.1"
|
||||
|
||||
bl@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/bl/-/bl-3.0.0.tgz#3611ec00579fd18561754360b21e9f784500ff88"
|
||||
dependencies:
|
||||
readable-stream "^3.0.1"
|
||||
|
||||
bl@^4.0.1:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.2.tgz#52b71e9088515d0606d9dd9cc7aa48dc1f98e73a"
|
||||
integrity sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ==
|
||||
dependencies:
|
||||
buffer "^5.5.0"
|
||||
inherits "^2.0.4"
|
||||
readable-stream "^3.4.0"
|
||||
|
||||
block-stream@*:
|
||||
version "0.0.9"
|
||||
resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
|
||||
|
@ -4177,6 +4179,14 @@ buffer@^4.3.0:
|
|||
ieee754 "^1.1.4"
|
||||
isarray "^1.0.0"
|
||||
|
||||
buffer@^5.5.0:
|
||||
version "5.6.0"
|
||||
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786"
|
||||
integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==
|
||||
dependencies:
|
||||
base64-js "^1.0.2"
|
||||
ieee754 "^1.1.4"
|
||||
|
||||
builtin-modules@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484"
|
||||
|
@ -9509,9 +9519,10 @@ jsx-ast-utils@^2.2.3:
|
|||
array-includes "^3.0.3"
|
||||
object.assign "^4.1.0"
|
||||
|
||||
jszip@^3.1.5:
|
||||
version "3.2.2"
|
||||
resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.2.2.tgz#b143816df7e106a9597a94c77493385adca5bd1d"
|
||||
jszip@^3.2.2:
|
||||
version "3.5.0"
|
||||
resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.5.0.tgz#b4fd1f368245346658e781fec9675802489e15f6"
|
||||
integrity sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==
|
||||
dependencies:
|
||||
lie "~3.3.0"
|
||||
pako "~1.0.2"
|
||||
|
@ -13267,7 +13278,7 @@ read@1, read@~1.0.1:
|
|||
string_decoder "^1.1.1"
|
||||
util-deprecate "^1.0.1"
|
||||
|
||||
readable-stream@^3.6.0:
|
||||
readable-stream@^3.4.0, readable-stream@^3.6.0:
|
||||
version "3.6.0"
|
||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
|
||||
integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
|
||||
|
@ -13638,32 +13649,7 @@ request@2.85.0:
|
|||
tunnel-agent "^0.6.0"
|
||||
uuid "^3.1.0"
|
||||
|
||||
request@2.88.0, request@^2.86.0, request@^2.87.0, request@^2.88.0:
|
||||
version "2.88.0"
|
||||
resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
|
||||
dependencies:
|
||||
aws-sign2 "~0.7.0"
|
||||
aws4 "^1.8.0"
|
||||
caseless "~0.12.0"
|
||||
combined-stream "~1.0.6"
|
||||
extend "~3.0.2"
|
||||
forever-agent "~0.6.1"
|
||||
form-data "~2.3.2"
|
||||
har-validator "~5.1.0"
|
||||
http-signature "~1.2.0"
|
||||
is-typedarray "~1.0.0"
|
||||
isstream "~0.1.2"
|
||||
json-stringify-safe "~5.0.1"
|
||||
mime-types "~2.1.19"
|
||||
oauth-sign "~0.9.0"
|
||||
performance-now "^2.1.0"
|
||||
qs "~6.5.2"
|
||||
safe-buffer "^5.1.2"
|
||||
tough-cookie "~2.4.3"
|
||||
tunnel-agent "^0.6.0"
|
||||
uuid "^3.3.2"
|
||||
|
||||
request@^2.88.2:
|
||||
request@2.88.2, request@^2.88.2:
|
||||
version "2.88.2"
|
||||
resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
|
||||
dependencies:
|
||||
|
@ -13688,6 +13674,31 @@ request@^2.88.2:
|
|||
tunnel-agent "^0.6.0"
|
||||
uuid "^3.3.2"
|
||||
|
||||
request@^2.86.0, request@^2.87.0, request@^2.88.0:
|
||||
version "2.88.0"
|
||||
resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
|
||||
dependencies:
|
||||
aws-sign2 "~0.7.0"
|
||||
aws4 "^1.8.0"
|
||||
caseless "~0.12.0"
|
||||
combined-stream "~1.0.6"
|
||||
extend "~3.0.2"
|
||||
forever-agent "~0.6.1"
|
||||
form-data "~2.3.2"
|
||||
har-validator "~5.1.0"
|
||||
http-signature "~1.2.0"
|
||||
is-typedarray "~1.0.0"
|
||||
isstream "~0.1.2"
|
||||
json-stringify-safe "~5.0.1"
|
||||
mime-types "~2.1.19"
|
||||
oauth-sign "~0.9.0"
|
||||
performance-now "^2.1.0"
|
||||
qs "~6.5.2"
|
||||
safe-buffer "^5.1.2"
|
||||
tough-cookie "~2.4.3"
|
||||
tunnel-agent "^0.6.0"
|
||||
uuid "^3.3.2"
|
||||
|
||||
require-directory@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
|
||||
|
@ -14122,7 +14133,7 @@ sass-loader@8.0.2:
|
|||
schema-utils "^2.6.1"
|
||||
semver "^6.3.0"
|
||||
|
||||
sax@>=0.6.0, sax@^1.2.4, sax@~1.2.1, sax@~1.2.4:
|
||||
sax@^1.2.4, sax@~1.2.1, sax@~1.2.4:
|
||||
version "1.2.4"
|
||||
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
|
||||
|
||||
|
@ -14169,9 +14180,10 @@ scss-tokenizer@^0.2.3:
|
|||
js-base64 "^2.1.8"
|
||||
source-map "^0.4.2"
|
||||
|
||||
selenium-standalone@6.17.0:
|
||||
version "6.17.0"
|
||||
resolved "https://registry.yarnpkg.com/selenium-standalone/-/selenium-standalone-6.17.0.tgz#0f24b691836205ee9bc3d7a6f207ebcb28170cd9"
|
||||
selenium-standalone@6.18.0:
|
||||
version "6.18.0"
|
||||
resolved "https://registry.yarnpkg.com/selenium-standalone/-/selenium-standalone-6.18.0.tgz#011e0672b1b86893f77244a86ddea1b6baadfb87"
|
||||
integrity sha512-JfuJZoPPhnRuOXPM60wElwzzf3f92VkHa/W1f0QLBxSMKy6K/CTICfPo75aSro8X5wf6pa2npjD/CQmZjUqsoA==
|
||||
dependencies:
|
||||
async "^2.6.2"
|
||||
commander "^2.19.0"
|
||||
|
@ -14181,20 +14193,20 @@ selenium-standalone@6.17.0:
|
|||
minimist "^1.2.0"
|
||||
mkdirp "^0.5.1"
|
||||
progress "2.0.3"
|
||||
request "2.88.0"
|
||||
tar-stream "2.0.0"
|
||||
request "2.88.2"
|
||||
tar-stream "2.1.3"
|
||||
urijs "^1.19.1"
|
||||
which "^1.3.1"
|
||||
yauzl "^2.10.0"
|
||||
|
||||
selenium-webdriver@4.0.0-alpha.5:
|
||||
version "4.0.0-alpha.5"
|
||||
resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.5.tgz#e4683b3dbf827d70df09a7e43bf02ebad20fa7c1"
|
||||
selenium-webdriver@4.0.0-alpha.7:
|
||||
version "4.0.0-alpha.7"
|
||||
resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-4.0.0-alpha.7.tgz#e3879d8457fd7ad8e4424094b7dc0540d99e6797"
|
||||
integrity sha512-D4qnTsyTr91jT8f7MfN+OwY0IlU5+5FmlO5xlgRUV6hDEV8JyYx2NerdTEqDDkNq7RZDYc4VoPALk8l578RBHw==
|
||||
dependencies:
|
||||
jszip "^3.1.5"
|
||||
rimraf "^2.6.3"
|
||||
jszip "^3.2.2"
|
||||
rimraf "^2.7.1"
|
||||
tmp "0.0.30"
|
||||
xml2js "^0.4.19"
|
||||
|
||||
semver-compare@^1.0.0:
|
||||
version "1.0.0"
|
||||
|
@ -15087,11 +15099,12 @@ tar-fs@^2.0.0:
|
|||
pump "^3.0.0"
|
||||
tar-stream "^2.0.0"
|
||||
|
||||
tar-stream@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.0.0.tgz#8829bbf83067bc0288a9089db49c56be395b6aea"
|
||||
tar-stream@2.1.3:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.1.3.tgz#1e2022559221b7866161660f118255e20fa79e41"
|
||||
integrity sha512-Z9yri56Dih8IaK8gncVPx4Wqt86NDmQTSh49XLZgjWpGZL9GK9HKParS2scqHCC4w6X9Gh2jwaU45V47XTKwVA==
|
||||
dependencies:
|
||||
bl "^2.2.0"
|
||||
bl "^4.0.1"
|
||||
end-of-stream "^1.4.1"
|
||||
fs-constants "^1.0.0"
|
||||
inherits "^2.0.3"
|
||||
|
@ -16325,17 +16338,6 @@ xml-name-validator@^3.0.0:
|
|||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
|
||||
|
||||
xml2js@^0.4.19:
|
||||
version "0.4.23"
|
||||
resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66"
|
||||
dependencies:
|
||||
sax ">=0.6.0"
|
||||
xmlbuilder "~11.0.0"
|
||||
|
||||
xmlbuilder@~11.0.0:
|
||||
version "11.0.1"
|
||||
resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3"
|
||||
|
||||
xmlchars@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
|
||||
|
|
Loading…
Reference in a new issue