Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
CoCo_Code_Op2
next.js
提交
e9549273
N
next.js
项目概览
CoCo_Code_Op2
/
next.js
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
N
next.js
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
e9549273
编写于
5月 06, 2020
作者:
J
Joe Haddad
提交者:
GitHub
5月 06, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[Fast Refresh] Separate LogBox Tests (#12564)
上级
d6b61d30
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
213 addition
and
206 deletion
+213
-206
test/acceptance/ReactRefresh.test.js
test/acceptance/ReactRefresh.test.js
+1
-206
test/acceptance/ReactRefreshLogBox.test.js
test/acceptance/ReactRefreshLogBox.test.js
+212
-0
未找到文件。
test/acceptance/ReactRefresh.test.js
浏览文件 @
e9549273
...
...
@@ -4,7 +4,7 @@ import { sandbox } from './helpers'
jasmine
.
DEFAULT_TIMEOUT_INTERVAL
=
1000
*
60
*
5
test
(
'
basic:
can edit a component without losing state
'
,
async
()
=>
{
test
(
'
can edit a component without losing state
'
,
async
()
=>
{
const
[
session
,
cleanup
]
=
await
sandbox
()
await
session
.
patch
(
...
...
@@ -59,62 +59,6 @@ test('basic: can edit a component without losing state', async () => {
await
cleanup
()
})
test
(
'
can recover from a syntax error without losing state
'
,
async
()
=>
{
const
[
session
,
cleanup
]
=
await
sandbox
()
await
session
.
patch
(
'
index.js
'
,
`
import { useCallback, useState } from 'react'
export default function Index() {
const [count, setCount] = useState(0)
const increment = useCallback(() => setCount(c => c + 1), [setCount])
return (
<main>
<p>{count}</p>
<button onClick={increment}>Increment</button>
</main>
)
}
`
)
await
session
.
evaluate
(()
=>
document
.
querySelector
(
'
button
'
).
click
())
expect
(
await
session
.
evaluate
(()
=>
document
.
querySelector
(
'
p
'
).
textContent
)
).
toBe
(
'
1
'
)
await
session
.
patch
(
'
index.js
'
,
`export default () => <div/`
)
expect
(
await
session
.
hasRedbox
(
true
)).
toBe
(
true
)
expect
(
await
session
.
getRedboxSource
()).
toMatch
(
'
SyntaxError
'
)
await
session
.
patch
(
'
index.js
'
,
`
import { useCallback, useState } from 'react'
export default function Index() {
const [count, setCount] = useState(0)
const increment = useCallback(() => setCount(c => c + 1), [setCount])
return (
<main>
<p>Count: {count}</p>
<button onClick={increment}>Increment</button>
</main>
)
}
`
)
expect
(
await
session
.
evaluate
(()
=>
document
.
querySelector
(
'
p
'
).
textContent
)
).
toBe
(
'
Count: 1
'
)
await
cleanup
()
})
test
(
'
cyclic dependencies
'
,
async
()
=>
{
const
[
session
,
cleanup
]
=
await
sandbox
()
...
...
@@ -273,152 +217,3 @@ test('cyclic dependencies', async () => {
await
cleanup
()
})
test
(
'
logbox: can recover from a event handler error
'
,
async
()
=>
{
const
[
session
,
cleanup
]
=
await
sandbox
()
await
session
.
patch
(
'
index.js
'
,
`
import { useCallback, useState } from 'react'
export default function Index() {
const [count, setCount] = useState(0)
const increment = useCallback(() => {
setCount(c => c + 1)
throw new Error('oops')
}, [setCount])
return (
<main>
<p>{count}</p>
<button onClick={increment}>Increment</button>
</main>
)
}
`
)
expect
(
await
session
.
evaluate
(()
=>
document
.
querySelector
(
'
p
'
).
textContent
)
).
toBe
(
'
0
'
)
await
session
.
evaluate
(()
=>
document
.
querySelector
(
'
button
'
).
click
())
expect
(
await
session
.
evaluate
(()
=>
document
.
querySelector
(
'
p
'
).
textContent
)
).
toBe
(
'
1
'
)
expect
(
await
session
.
hasRedbox
(
true
)).
toBe
(
true
)
expect
(
await
session
.
getRedboxSource
()).
toMatchInlineSnapshot
(
`
"index.js (8:16) @ eval
6 | const increment = useCallback(() => {
7 | setCount(c => c + 1)
> 8 | throw new Error('oops')
| ^
9 | }, [setCount])
10 | return (
11 | <main>"
`
)
await
session
.
patch
(
'
index.js
'
,
`
import { useCallback, useState } from 'react'
export default function Index() {
const [count, setCount] = useState(0)
const increment = useCallback(() => setCount(c => c + 1), [setCount])
return (
<main>
<p>Count: {count}</p>
<button onClick={increment}>Increment</button>
</main>
)
}
`
)
expect
(
await
session
.
hasRedbox
()).
toBe
(
false
)
expect
(
await
session
.
evaluate
(()
=>
document
.
querySelector
(
'
p
'
).
textContent
)
).
toBe
(
'
Count: 1
'
)
await
session
.
evaluate
(()
=>
document
.
querySelector
(
'
button
'
).
click
())
expect
(
await
session
.
evaluate
(()
=>
document
.
querySelector
(
'
p
'
).
textContent
)
).
toBe
(
'
Count: 2
'
)
expect
(
await
session
.
hasRedbox
()).
toBe
(
false
)
await
cleanup
()
})
test
(
'
logbox: can recover from a component error
'
,
async
()
=>
{
const
[
session
,
cleanup
]
=
await
sandbox
()
await
session
.
write
(
'
child.js
'
,
`
export default function Child() {
return <p>Hello</p>;
}
`
)
await
session
.
patch
(
'
index.js
'
,
`
import Child from './child'
export default function Index() {
return (
<main>
<Child />
</main>
)
}
`
)
expect
(
await
session
.
evaluate
(()
=>
document
.
querySelector
(
'
p
'
).
textContent
)
).
toBe
(
'
Hello
'
)
await
session
.
patch
(
'
child.js
'
,
`
// hello
export default function Child() {
throw new Error('oops')
}
`
)
expect
(
await
session
.
hasRedbox
(
true
)).
toBe
(
true
)
expect
(
await
session
.
getRedboxSource
()).
toMatchInlineSnapshot
(
`
"child.js (4:14) @ Child
2 | // hello
3 | export default function Child() {
> 4 | throw new Error('oops')
| ^
5 | }
6 | "
`
)
const
didNotReload
=
await
session
.
patch
(
'
child.js
'
,
`
export default function Child() {
return <p>Hello</p>;
}
`
)
expect
(
didNotReload
).
toBe
(
true
)
expect
(
await
session
.
hasRedbox
()).
toBe
(
false
)
expect
(
await
session
.
evaluate
(()
=>
document
.
querySelector
(
'
p
'
).
textContent
)
).
toBe
(
'
Hello
'
)
await
cleanup
()
})
test/acceptance/ReactRefreshLogBox.test.js
0 → 100644
浏览文件 @
e9549273
/* global jasmine */
/* eslint-env jest */
import
{
sandbox
}
from
'
./helpers
'
jasmine
.
DEFAULT_TIMEOUT_INTERVAL
=
1000
*
60
*
5
test
(
'
logbox: can recover from a syntax error without losing state
'
,
async
()
=>
{
const
[
session
,
cleanup
]
=
await
sandbox
()
await
session
.
patch
(
'
index.js
'
,
`
import { useCallback, useState } from 'react'
export default function Index() {
const [count, setCount] = useState(0)
const increment = useCallback(() => setCount(c => c + 1), [setCount])
return (
<main>
<p>{count}</p>
<button onClick={increment}>Increment</button>
</main>
)
}
`
)
await
session
.
evaluate
(()
=>
document
.
querySelector
(
'
button
'
).
click
())
expect
(
await
session
.
evaluate
(()
=>
document
.
querySelector
(
'
p
'
).
textContent
)
).
toBe
(
'
1
'
)
await
session
.
patch
(
'
index.js
'
,
`export default () => <div/`
)
expect
(
await
session
.
hasRedbox
(
true
)).
toBe
(
true
)
expect
(
await
session
.
getRedboxSource
()).
toMatch
(
'
SyntaxError
'
)
await
session
.
patch
(
'
index.js
'
,
`
import { useCallback, useState } from 'react'
export default function Index() {
const [count, setCount] = useState(0)
const increment = useCallback(() => setCount(c => c + 1), [setCount])
return (
<main>
<p>Count: {count}</p>
<button onClick={increment}>Increment</button>
</main>
)
}
`
)
expect
(
await
session
.
evaluate
(()
=>
document
.
querySelector
(
'
p
'
).
textContent
)
).
toBe
(
'
Count: 1
'
)
expect
(
await
session
.
hasRedbox
()).
toBe
(
false
)
await
cleanup
()
})
test
(
'
logbox: can recover from a event handler error
'
,
async
()
=>
{
const
[
session
,
cleanup
]
=
await
sandbox
()
await
session
.
patch
(
'
index.js
'
,
`
import { useCallback, useState } from 'react'
export default function Index() {
const [count, setCount] = useState(0)
const increment = useCallback(() => {
setCount(c => c + 1)
throw new Error('oops')
}, [setCount])
return (
<main>
<p>{count}</p>
<button onClick={increment}>Increment</button>
</main>
)
}
`
)
expect
(
await
session
.
evaluate
(()
=>
document
.
querySelector
(
'
p
'
).
textContent
)
).
toBe
(
'
0
'
)
await
session
.
evaluate
(()
=>
document
.
querySelector
(
'
button
'
).
click
())
expect
(
await
session
.
evaluate
(()
=>
document
.
querySelector
(
'
p
'
).
textContent
)
).
toBe
(
'
1
'
)
expect
(
await
session
.
hasRedbox
(
true
)).
toBe
(
true
)
expect
(
await
session
.
getRedboxSource
()).
toMatchInlineSnapshot
(
`
"index.js (8:16) @ eval
6 | const increment = useCallback(() => {
7 | setCount(c => c + 1)
> 8 | throw new Error('oops')
| ^
9 | }, [setCount])
10 | return (
11 | <main>"
`
)
await
session
.
patch
(
'
index.js
'
,
`
import { useCallback, useState } from 'react'
export default function Index() {
const [count, setCount] = useState(0)
const increment = useCallback(() => setCount(c => c + 1), [setCount])
return (
<main>
<p>Count: {count}</p>
<button onClick={increment}>Increment</button>
</main>
)
}
`
)
expect
(
await
session
.
hasRedbox
()).
toBe
(
false
)
expect
(
await
session
.
evaluate
(()
=>
document
.
querySelector
(
'
p
'
).
textContent
)
).
toBe
(
'
Count: 1
'
)
await
session
.
evaluate
(()
=>
document
.
querySelector
(
'
button
'
).
click
())
expect
(
await
session
.
evaluate
(()
=>
document
.
querySelector
(
'
p
'
).
textContent
)
).
toBe
(
'
Count: 2
'
)
expect
(
await
session
.
hasRedbox
()).
toBe
(
false
)
await
cleanup
()
})
test
(
'
logbox: can recover from a component error
'
,
async
()
=>
{
const
[
session
,
cleanup
]
=
await
sandbox
()
await
session
.
write
(
'
child.js
'
,
`
export default function Child() {
return <p>Hello</p>;
}
`
)
await
session
.
patch
(
'
index.js
'
,
`
import Child from './child'
export default function Index() {
return (
<main>
<Child />
</main>
)
}
`
)
expect
(
await
session
.
evaluate
(()
=>
document
.
querySelector
(
'
p
'
).
textContent
)
).
toBe
(
'
Hello
'
)
await
session
.
patch
(
'
child.js
'
,
`
// hello
export default function Child() {
throw new Error('oops')
}
`
)
expect
(
await
session
.
hasRedbox
(
true
)).
toBe
(
true
)
expect
(
await
session
.
getRedboxSource
()).
toMatchInlineSnapshot
(
`
"child.js (4:14) @ Child
2 | // hello
3 | export default function Child() {
> 4 | throw new Error('oops')
| ^
5 | }
6 | "
`
)
const
didNotReload
=
await
session
.
patch
(
'
child.js
'
,
`
export default function Child() {
return <p>Hello</p>;
}
`
)
expect
(
didNotReload
).
toBe
(
true
)
expect
(
await
session
.
hasRedbox
()).
toBe
(
false
)
expect
(
await
session
.
evaluate
(()
=>
document
.
querySelector
(
'
p
'
).
textContent
)
).
toBe
(
'
Hello
'
)
await
cleanup
()
})
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录