@@ -33,7 +33,7 @@ async function saveCoverage( coverage ) {
3333 ) ;
3434}
3535
36- // Extend WordPress test with Istanbul coverage collection
36+ // Extend WordPress test with Istanbul coverage collection and WP version compatibility
3737const test = wpTest . extend ( {
3838 page : async ( { page } , use ) => {
3939 await use ( page ) ;
@@ -46,6 +46,57 @@ const test = wpTest.extend( {
4646 }
4747 }
4848 } ,
49+
50+ // Override editor fixture to provide version-compatible methods.
51+ // WP 6.3+ has "View" button and iframe canvas, WP 6.2 has "Preview" button and no iframe.
52+ editor : async ( { editor, page, context } , use ) => {
53+ // Create extended editor object with version-compatible overrides
54+ const extendedEditor = Object . create ( editor , {
55+ // WP 6.2 doesn't have iframe canvas. Return a Promise so
56+ // `await editor.canvas` works correctly for both versions.
57+ canvas : {
58+ get ( ) {
59+ return ( async ( ) => {
60+ const isWP62 = await page . evaluate (
61+ ( ) => document . body . classList . contains ( 'branch-6-2' )
62+ ) ;
63+ if ( isWP62 ) {
64+ return page ;
65+ }
66+ return page . frameLocator ( 'iframe[name="editor-canvas"]' ) ;
67+ } ) ( ) ;
68+ } ,
69+ } ,
70+ // WP 6.2 has "Preview" button, WP 6.3+ has "View" button.
71+ openPreviewPage : {
72+ value : async ( ) => {
73+ const isWP62 = await page . evaluate (
74+ ( ) => document . body . classList . contains ( 'branch-6-2' )
75+ ) ;
76+
77+ if ( ! isWP62 ) {
78+ return editor . openPreviewPage ( ) ;
79+ }
80+
81+ const editorTopBar = page . locator (
82+ 'role=region[name="Editor top bar"i]'
83+ ) ;
84+ await editorTopBar
85+ . locator ( 'role=button[name="Preview"i]' )
86+ . click ( ) ;
87+
88+ const [ previewPage ] = await Promise . all ( [
89+ context . waitForEvent ( 'page' ) ,
90+ page . click ( 'role=menuitem[name="Preview in new tab"i]' ) ,
91+ ] ) ;
92+
93+ return previewPage ;
94+ } ,
95+ } ,
96+ } ) ;
97+
98+ await use ( extendedEditor ) ;
99+ } ,
49100} ) ;
50101
51102module . exports = { test, expect } ;
0 commit comments