Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 66dd1aa

Browse files
authoredMay 7, 2020
test(Transition): test transition (#1140)
1 parent d10835a commit 66dd1aa

File tree

2 files changed

+133
-0
lines changed

2 files changed

+133
-0
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import { E2E_TIMEOUT, setupPuppeteer } from '../e2eUtils'
2+
import path from 'path'
3+
4+
function nextFrame(cb: () => void) {
5+
requestAnimationFrame(() => {
6+
requestAnimationFrame(cb)
7+
})
8+
}
9+
10+
describe('e2e: Transition', () => {
11+
const { page, html, click, classList } = setupPuppeteer()
12+
const baseUrl = `file://${path.resolve(
13+
__dirname,
14+
'../../transition/index.html'
15+
)}`
16+
const duration = 50,
17+
buffer = 10
18+
const container = '#test'
19+
20+
test(
21+
'basic transition',
22+
async () => {
23+
await page().goto(baseUrl)
24+
await page().waitFor('#app')
25+
expect(await html(container)).toBe('<div class="test"></div>')
26+
27+
await click('button')
28+
expect(await classList('#test div')).toStrictEqual([
29+
'test',
30+
'v-leave-active',
31+
'v-leave-from'
32+
])
33+
await new Promise((resolve, reject) => {
34+
nextFrame(async () => {
35+
expect(await classList('#test div')).toStrictEqual([
36+
'test',
37+
'v-leave-active',
38+
'v-leave-to'
39+
])
40+
setTimeout(async () => {
41+
expect(await html('#test')).toBe('<!--v-if-->')
42+
resolve()
43+
}, duration + buffer)
44+
})
45+
})
46+
47+
await click('button')
48+
expect(await classList('#test div')).toStrictEqual([
49+
'test',
50+
'v-enter-active',
51+
'v-enter-from'
52+
])
53+
await new Promise((resolve, reject) => {
54+
nextFrame(async () => {
55+
expect(await classList('#test div')).toStrictEqual([
56+
'test',
57+
'v-enter-active',
58+
'v-enter-to'
59+
])
60+
setTimeout(async () => {
61+
expect(await html('#test')).toBe('<div class="test"></div>')
62+
resolve()
63+
}, duration + buffer)
64+
})
65+
})
66+
},
67+
E2E_TIMEOUT
68+
)
69+
})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<script src="../../dist/vue.global.js"></script>
2+
<div id="app"></div>
3+
<script>
4+
Vue.createApp({
5+
template: `
6+
<div id="test"><transition><div v-if="toggle" class="test"></div></transition></div>
7+
<button @click="click"></button>
8+
`,
9+
setup:() => {
10+
const toggle = Vue.ref(true)
11+
const click = () => toggle.value = !toggle.value
12+
return { toggle, click }
13+
}
14+
}).mount('#app')
15+
</script>
16+
17+
<style>
18+
.test {
19+
-webkit-transition: opacity 50ms ease;
20+
transition: opacity 50ms ease;
21+
}
22+
.group-move {
23+
-webkit-transition: -webkit-transform 50ms ease;
24+
transition: transform 50ms ease;
25+
}
26+
.v-appear, .v-enter, .v-leave-active,
27+
.test-appear, .test-enter, .test-leave-active,
28+
.hello, .bye.active,
29+
.changed-enter {
30+
opacity: 0;
31+
}
32+
.test-anim-enter-active {
33+
animation: test-enter 50ms;
34+
-webkit-animation: test-enter 50ms;
35+
}
36+
.test-anim-leave-active {
37+
animation: test-leave 50ms;
38+
-webkit-animation: test-leave 50ms;
39+
}
40+
.test-anim-long-enter-active {
41+
animation: test-enter 100ms;
42+
-webkit-animation: test-enter 100ms;
43+
}
44+
.test-anim-long-leave-active {
45+
animation: test-leave 100ms;
46+
-webkit-animation: test-leave 100ms;
47+
}
48+
@keyframes test-enter {
49+
from { opacity: 0 }
50+
to { opacity: 1 }
51+
}
52+
@-webkit-keyframes test-enter {
53+
from { opacity: 0 }
54+
to { opacity: 1 }
55+
}
56+
@keyframes test-leave {
57+
from { opacity: 1 }
58+
to { opacity: 0 }
59+
}
60+
@-webkit-keyframes test-leave {
61+
from { opacity: 1 }
62+
to { opacity: 0 }
63+
}
64+
</style>

0 commit comments

Comments
 (0)
Please sign in to comment.