forked from vercel/next.js
-
Notifications
You must be signed in to change notification settings - Fork 11
/
client.js
115 lines (94 loc) · 3.45 KB
/
client.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
/* eslint-env jest */
import webdriver from 'next-webdriver'
import { waitFor } from 'next-test-utils' /* check, File */
import { readFileSync, writeFileSync } from 'fs'
import { join } from 'path'
export default (context, render) => {
describe('Configuration', () => {
it('should have config available on the client', async () => {
const browser = await webdriver(context.appPort, '/next-config')
const serverText = await browser.elementByCss('#server-only').text()
const serverClientText = await browser
.elementByCss('#server-and-client')
.text()
const envValue = await browser.elementByCss('#env').text()
expect(serverText).toBe('')
expect(serverClientText).toBe('/static')
expect(envValue).toBe('hello')
await browser.close()
})
it('should update css styles using hmr', async () => {
let browser
try {
browser = await webdriver(context.appPort, '/webpack-css')
const pTag = await browser.elementByCss('.hello-world')
const initialFontSize = await pTag.getComputedCss('font-size')
expect(initialFontSize).toBe('100px')
const pagePath = join(
__dirname,
'../',
'components',
'hello-webpack-css.css'
)
const originalContent = readFileSync(pagePath, 'utf8')
const editedContent = originalContent.replace('100px', '200px')
// Change the page
writeFileSync(pagePath, editedContent, 'utf8')
await waitFor(10000)
try {
// Check whether the this page has reloaded or not.
const editedPTag = await browser.elementByCss('.hello-world')
const editedFontSize = await editedPTag.getComputedCss('font-size')
expect(editedFontSize).toBe('200px')
} finally {
// Finally is used so that we revert the content back to the original regardless of the test outcome
// restore the about page content.
writeFileSync(pagePath, originalContent, 'utf8')
}
} finally {
if (browser) {
await browser.close()
}
}
})
// it('should update sass styles using hmr', async () => {
// const file = new File(join(__dirname, '../', 'components', 'hello-webpack-sass.scss'))
// let browser
// try {
// browser = await webdriver(context.appPort, '/webpack-css')
// expect(
// await browser.elementByCss('.hello-world').getComputedCss('color')
// ).toBe('rgba(255, 255, 0, 1)')
// file.replace('yellow', 'red')
// await waitFor(10000)
// await check(
// async () => {
// const tag = await browser.elementByCss('.hello-world')
// const prop = await tag.getComputedCss('color')
// expect(prop).toBe('rgba(255, 0, 0, 1)')
// return 'works'
// },
// /works/
// )
// file.restore()
// await waitFor(10000)
// await check(
// async () => {
// const tag = await browser.elementByCss('.hello-world')
// const prop = await tag.getComputedCss('color')
// expect(prop).toBe('rgba(255, 255, 0, 1)')
// return 'works'
// },
// /works/
// )
// } catch (err) {
// file.restore()
// throw err
// } finally {
// if (browser) {
// await browser.close()
// }
// }
// })
})
}