Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
gzupanda
code-server
提交
38d7718f
C
code-server
项目概览
gzupanda
/
code-server
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
code-server
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
38d7718f
编写于
2月 11, 2021
作者:
J
Joe Previte
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor: use promises for goHome test
上级
06af8b32
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
20 addition
and
28 deletion
+20
-28
ci/dev/test.sh
ci/dev/test.sh
+1
-2
test/goHome.test.ts
test/goHome.test.ts
+19
-26
未找到文件。
ci/dev/test.sh
浏览文件 @
38d7718f
...
...
@@ -9,8 +9,7 @@ main() {
# information. We must also run it from the root otherwise coverage will not
# include our source files.
cd
"
$OLDPWD
"
# We use the same environment variables set in ci.yml in the test job
if
[[
-z
${
PASSWORD
+x
}
]]
||
[[
-z
${
CODE_SERVER_ADDRESS
+x
}
]]
;
then
if
[[
-z
${
PASSWORD
-
}
]]
||
[[
-z
${
CODE_SERVER_ADDRESS
-
}
]]
;
then
echo
"The end-to-end testing suites rely on your local environment"
echo
-e
"
\n
"
echo
"Please set the following environment variables locally:"
...
...
test/goHome.test.ts
浏览文件 @
38d7718f
...
...
@@ -2,15 +2,23 @@ import { chromium, Page, Browser, BrowserContext, Cookie } from "playwright"
import
{
createCookieIfDoesntExist
}
from
"
../src/common/util
"
import
{
hash
}
from
"
../src/node/util
"
describe
(
"
login
"
,
()
=>
{
async
function
setTimeoutPromise
(
milliseconds
:
number
):
Promise
<
void
>
{
return
new
Promise
((
resolve
,
_
)
=>
{
setTimeout
(()
=>
{
resolve
()
},
milliseconds
)
})
}
describe
(
"
go home
"
,
()
=>
{
let
browser
:
Browser
let
page
:
Page
let
context
:
BrowserContext
beforeAll
(
async
(
done
)
=>
{
beforeAll
(
async
()
=>
{
browser
=
await
chromium
.
launch
()
// Create a new context with the saved storage state
const
storageState
=
JSON
.
parse
(
process
.
env
.
STORAGE
||
""
)
const
storageState
=
JSON
.
parse
(
process
.
env
.
STORAGE
||
"
{}
"
)
const
cookieToStore
=
{
sameSite
:
"
Lax
"
as
const
,
...
...
@@ -40,37 +48,23 @@ describe("login", () => {
storageState
:
{
cookies
:
maybeUpdatedCookies
},
recordVideo
:
{
dir
:
"
./test/videos/
"
},
})
done
()
})
afterAll
(
async
(
done
)
=>
{
afterAll
(
async
()
=>
{
// Remove password from local storage
await
context
.
clearCookies
()
await
browser
.
close
()
await
context
.
close
()
done
()
})
beforeEach
(
async
(
done
)
=>
{
beforeEach
(
async
()
=>
{
page
=
await
context
.
newPage
()
done
()
})
// NOTE: this test will fail if you do not run code-server with --home $CODE_SERVER_ADDRESS/healthz
it
(
"
should see a 'Go Home' button in the Application Menu that goes to /healthz
"
,
async
(
done
)
=>
{
it
(
"
should see a 'Go Home' button in the Application Menu that goes to /healthz
"
,
async
()
=>
{
let
requestedGoHomeUrl
=
false
// Ideally, this test should pass and finish before the timeout set in the Jest config
// However, if it doesn't, we don't want a memory leak so we set this backup timeout
// Otherwise Jest may throw this error
// "Jest did not exit one second after the test run has completed.
// This usually means that there are asynchronous operations that weren't stopped in your tests.
// Consider running Jest with `--detectOpenHandles` to troubleshoot this issue."
const
backupTimeout
=
setTimeout
(()
=>
{
// If it's not true by this point then the test should fail
expect
(
requestedGoHomeUrl
).
toBeTruthy
()
done
()
},
20000
)
const
GO_HOME_URL
=
`
${
process
.
env
.
CODE_SERVER_ADDRESS
}
/healthz`
page
.
on
(
"
request
"
,
(
request
)
=>
{
...
...
@@ -80,11 +74,6 @@ describe("login", () => {
// only that it was made
if
(
request
.
url
()
===
GO_HOME_URL
)
{
requestedGoHomeUrl
=
true
expect
(
requestedGoHomeUrl
).
toBeTruthy
()
clearTimeout
(
backupTimeout
)
// This ensures Jest knows we're done here.
done
()
}
})
// Sometimes a dialog shows up when you navigate
...
...
@@ -105,6 +94,10 @@ describe("login", () => {
// Click it and navigate to /healthz
// NOTE: ran into issues of it failing intermittently
// without having button: "middle"
await
page
.
click
(
goHomeButton
,
{
button
:
"
middle
"
})
await
Promise
.
all
([
page
.
waitForNavigation
(),
page
.
click
(
goHomeButton
,
{
button
:
"
middle
"
})
])
expect
(
page
.
url
()).
toBe
(
GO_HOME_URL
)
})
})
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录