@@ -2,11 +2,11 @@ import { expect, test } from '@playwright/test'
2
2
import { IS_DEV } from '../utils/env'
3
3
import { readSourceMarkdown , writeSourceMarkdown } from '../utils/source'
4
4
5
- const hmrUpdateTitle = async ( ) : Promise < void > => {
6
- const markdownContent = await readSourceMarkdown ( 'hmr/title .md' )
5
+ const hmrUpdateContent = async ( ) : Promise < void > => {
6
+ const markdownContent = await readSourceMarkdown ( 'hmr/content .md' )
7
7
await writeSourceMarkdown (
8
- 'hmr/title .md' ,
9
- markdownContent . replace ( '# HMR Title ' , '# Updated Title ' ) ,
8
+ 'hmr/content .md' ,
9
+ markdownContent . replace ( 'HMR content ' , 'Updated content ' ) ,
10
10
)
11
11
}
12
12
@@ -18,19 +18,32 @@ const hmrUpdateFrontmatter = async (): Promise<void> => {
18
18
)
19
19
}
20
20
21
+ const hmrUpdateTitle = async ( ) : Promise < void > => {
22
+ const markdownContent = await readSourceMarkdown ( 'hmr/title.md' )
23
+ await writeSourceMarkdown (
24
+ 'hmr/title.md' ,
25
+ markdownContent . replace ( '# HMR Title' , '# Updated Title' ) ,
26
+ )
27
+ }
28
+
21
29
const hmrRestore = async ( ) : Promise < void > => {
22
- const titleMarkdownContent = await readSourceMarkdown ( 'hmr/title .md' )
30
+ const contentMarkdownContent = await readSourceMarkdown ( 'hmr/content .md' )
23
31
const frontmatterMarkdownContent =
24
32
await readSourceMarkdown ( 'hmr/frontmatter.md' )
33
+ const titleMarkdownContent = await readSourceMarkdown ( 'hmr/title.md' )
25
34
26
35
await writeSourceMarkdown (
27
- 'hmr/title .md' ,
28
- titleMarkdownContent . replace ( '# Updated Title ' , '# HMR Title ' ) ,
36
+ 'hmr/content .md' ,
37
+ contentMarkdownContent . replace ( 'Updated content ' , 'HMR content ' ) ,
29
38
)
30
39
await writeSourceMarkdown (
31
40
'hmr/frontmatter.md' ,
32
41
frontmatterMarkdownContent . replace ( 'foo: Updated foo' , 'foo: HMR foo' ) ,
33
42
)
43
+ await writeSourceMarkdown (
44
+ 'hmr/title.md' ,
45
+ titleMarkdownContent . replace ( '# Updated Title' , '# HMR Title' ) ,
46
+ )
34
47
}
35
48
36
49
if ( IS_DEV ) {
@@ -41,6 +54,16 @@ if (IS_DEV) {
41
54
await hmrRestore ( )
42
55
} )
43
56
57
+ test ( 'should update content correctly' , async ( { page } ) => {
58
+ const contentLocator = page . locator ( '.e2e-theme-content #content + p' )
59
+
60
+ await page . goto ( 'hmr/content.html' )
61
+
62
+ await expect ( contentLocator ) . toHaveText ( 'HMR content' )
63
+ await hmrUpdateContent ( )
64
+ await expect ( contentLocator ) . toHaveText ( 'Updated content' )
65
+ } )
66
+
44
67
test ( 'should update frontmatter correctly' , async ( { page } ) => {
45
68
const frontmatterLocator = page . locator (
46
69
'.e2e-theme-content #rendered-foo + p' ,
@@ -54,53 +77,85 @@ if (IS_DEV) {
54
77
} )
55
78
56
79
test ( 'should update title correctly' , async ( { page } ) => {
57
- const titleLocator = page . locator ( '.e2e-theme-content #rendered-title + p' )
80
+ const titleLocator = page . locator ( '.e2e-theme-content h1' )
81
+ const renderedTitleLocator = page . locator (
82
+ '.e2e-theme-content #rendered-title + p' ,
83
+ )
58
84
59
85
await page . goto ( 'hmr/title.html' )
60
86
61
87
await expect ( page ) . toHaveTitle ( / H M R T i t l e / )
62
88
await expect ( titleLocator ) . toHaveText ( 'HMR Title' )
89
+ await expect ( renderedTitleLocator ) . toHaveText ( 'HMR Title' )
63
90
await hmrUpdateTitle ( )
64
91
await expect ( page ) . toHaveTitle ( / U p d a t e d T i t l e / )
65
92
await expect ( titleLocator ) . toHaveText ( 'Updated Title' )
93
+ await expect ( renderedTitleLocator ) . toHaveText ( 'Updated Title' )
66
94
} )
67
95
68
- test ( 'should update title and frontmatter correctly after navigation' , async ( {
96
+ test ( 'should update content and frontmatter and title correctly after navigation' , async ( {
69
97
page,
70
98
} ) => {
71
- const titleLocator = page . locator ( '.e2e-theme-content #rendered-title + p' )
99
+ // text locators
100
+ const contentLocator = page . locator ( '.e2e-theme-content #content + p' )
72
101
const frontmatterLocator = page . locator (
73
102
'.e2e-theme-content #rendered-foo + p' ,
74
103
)
104
+ const titleLocator = page . locator ( '.e2e-theme-content #rendered-title + p' )
105
+ const renderedTitleLocator = page . locator (
106
+ '.e2e-theme-content #rendered-title + p' ,
107
+ )
75
108
109
+ // link locators
110
+ const contentPageLinkLocator = page . locator (
111
+ '.e2e-theme-content #link-to-content + p > a' ,
112
+ )
113
+ const frontmatterPageLinkLocator = page . locator (
114
+ '.e2e-theme-content #link-to-frontmatter + p > a' ,
115
+ )
116
+ const titlePageLinkLocator = page . locator (
117
+ '.e2e-theme-content #link-to-title + p > a' ,
118
+ )
119
+
120
+ // start from title page
76
121
await page . goto ( 'hmr/title.html' )
77
122
await expect ( page ) . toHaveTitle ( / H M R T i t l e / )
78
123
await expect ( titleLocator ) . toHaveText ( 'HMR Title' )
124
+ await expect ( renderedTitleLocator ) . toHaveText ( 'HMR Title' )
79
125
80
126
// update title page
81
127
await hmrUpdateTitle ( )
82
128
await expect ( page ) . toHaveTitle ( / U p d a t e d T i t l e / )
83
129
await expect ( titleLocator ) . toHaveText ( 'Updated Title' )
130
+ await expect ( renderedTitleLocator ) . toHaveText ( 'Updated Title' )
84
131
85
132
// navigate to frontmatter page
86
- await page
87
- . locator ( '.e2e-theme-content #link-to-frontmatter + p > a' )
88
- . click ( )
133
+ await frontmatterPageLinkLocator . click ( )
89
134
await expect ( frontmatterLocator ) . toHaveText ( 'HMR foo' )
90
135
91
136
// update frontmatter page
92
137
await hmrUpdateFrontmatter ( )
93
138
await expect ( frontmatterLocator ) . toHaveText ( 'Updated foo' )
94
139
140
+ // navigate to content page
141
+ await contentPageLinkLocator . click ( )
142
+ await expect ( contentLocator ) . toHaveText ( 'HMR content' )
143
+
144
+ // update content page
145
+ await hmrUpdateContent ( )
146
+ await expect ( contentLocator ) . toHaveText ( 'Updated content' )
147
+
95
148
// navigate to back title page
96
- await page . locator ( '.e2e-theme-content #link-to-title + p > a' ) . click ( )
149
+ await titlePageLinkLocator . click ( )
97
150
await expect ( page ) . toHaveTitle ( / U p d a t e d T i t l e / )
98
151
await expect ( titleLocator ) . toHaveText ( 'Updated Title' )
99
152
100
153
// navigate to back frontmatter page
101
- await page
102
- . locator ( '.e2e-theme-content #link-to-frontmatter + p > a' )
103
- . click ( )
154
+ await frontmatterPageLinkLocator . click ( )
104
155
await expect ( frontmatterLocator ) . toHaveText ( 'Updated foo' )
156
+
157
+ // navigate to back content page
158
+ await contentPageLinkLocator . click ( )
159
+ await expect ( contentLocator ) . toHaveText ( 'Updated content' )
105
160
} )
106
161
}
0 commit comments