1
- import { type Page , test } from "@playwright/test" ;
1
+ import { type Page , expect , test } from "@playwright/test" ;
2
2
import { createEditor } from "./helper" ;
3
3
4
4
test ( "client reference" , async ( { page } ) => {
@@ -14,13 +14,13 @@ test("client reference", async ({ page }) => {
14
14
await page . getByText ( "Client counter: 0" ) . click ( ) ;
15
15
} ) ;
16
16
17
- test ( "server reference @js" , async ( { page } ) => {
17
+ test ( "server reference in server @js" , async ( { page } ) => {
18
18
await testServerAction ( page ) ;
19
19
} ) ;
20
20
21
21
test . describe ( ( ) => {
22
22
test . use ( { javaScriptEnabled : false } ) ;
23
- test ( "server reference @nojs" , async ( { page } ) => {
23
+ test ( "server reference in server @nojs" , async ( { page } ) => {
24
24
await testServerAction ( page ) ;
25
25
} ) ;
26
26
} ) ;
@@ -42,6 +42,41 @@ async function testServerAction(page: Page) {
42
42
await page . getByText ( "Server counter: 0" ) . click ( ) ;
43
43
}
44
44
45
+ test ( "server reference in client @js" , async ( { page } ) => {
46
+ await testServerAction2 ( page , { js : true } ) ;
47
+ } ) ;
48
+
49
+ test . describe ( ( ) => {
50
+ test . use ( { javaScriptEnabled : false } ) ;
51
+ test ( "server reference in client @nojs" , async ( { page } ) => {
52
+ await testServerAction2 ( page , { js : false } ) ;
53
+ } ) ;
54
+ } ) ;
55
+
56
+ async function testServerAction2 ( page : Page , options : { js : boolean } ) {
57
+ await page . goto ( "/" ) ;
58
+ if ( options . js ) {
59
+ await page . getByText ( "[hydrated: 1]" ) . click ( ) ;
60
+ }
61
+ await page . locator ( 'input[name="x"]' ) . fill ( "2" ) ;
62
+ await page . locator ( 'input[name="y"]' ) . fill ( "3" ) ;
63
+ await page . locator ( 'input[name="y"]' ) . press ( "Enter" ) ;
64
+ await expect ( page . getByTestId ( "calculator-answer" ) ) . toContainText ( "5" ) ;
65
+ await page . locator ( 'input[name="x"]' ) . fill ( "2" ) ;
66
+ await page . locator ( 'input[name="y"]' ) . fill ( "three" ) ;
67
+ await page . locator ( 'input[name="y"]' ) . press ( "Enter" ) ;
68
+ await expect ( page . getByTestId ( "calculator-answer" ) ) . toContainText (
69
+ "(invalid input)" ,
70
+ ) ;
71
+ if ( options . js ) {
72
+ await expect ( page . locator ( 'input[name="x"]' ) ) . toHaveValue ( "2" ) ;
73
+ await expect ( page . locator ( 'input[name="y"]' ) ) . toHaveValue ( "three" ) ;
74
+ } else {
75
+ await expect ( page . locator ( 'input[name="x"]' ) ) . toHaveValue ( "" ) ;
76
+ await expect ( page . locator ( 'input[name="y"]' ) ) . toHaveValue ( "" ) ;
77
+ }
78
+ }
79
+
45
80
test ( "client hmr @dev" , async ( { page } ) => {
46
81
await page . goto ( "/" ) ;
47
82
await page . getByText ( "[hydrated: 1]" ) . click ( ) ;
0 commit comments