@@ -32,12 +32,47 @@ define(function (require, exports, module) {
3232
3333 describe ( "livepreview:MultiBrowser Live Preview" , function ( ) {
3434
35+ function _getLivePreviewIFrame ( ) {
36+ return testWindow . document . getElementById ( "panel-live-preview-frame" ) ;
37+ }
38+
39+ function _getMdPreviewIFrame ( ) {
40+ return testWindow . document . getElementById ( "panel-md-preview-frame" ) ;
41+ }
42+
43+ function _getPreviewIFrame ( ) {
44+ return _getMdPreviewIFrame ( ) || _getLivePreviewIFrame ( ) ;
45+ }
46+
47+ function _ensureMdReaderMode ( ) {
48+ const mdIFrame = _getMdPreviewIFrame ( ) ;
49+ if ( mdIFrame && mdIFrame . contentWindow ) {
50+ mdIFrame . contentWindow . postMessage ( {
51+ type : "MDVIEWR_SET_EDIT_MODE" ,
52+ editMode : false
53+ } , "*" ) ;
54+ }
55+ }
56+
3557 async function _waitForIframeSrc ( name ) {
3658 await awaitsFor ( ( ) => {
37- let outerIFrame = testWindow . document . getElementById ( "panel-live-preview-frame" ) ;
59+ if ( name . endsWith ( ".md" ) ) {
60+ // For markdown files, check the md iframe is visible with mdViewer loaded
61+ let mdIFrame = _getMdPreviewIFrame ( ) ;
62+ return mdIFrame && mdIFrame . style . display !== "none" &&
63+ mdIFrame . src && mdIFrame . src . includes ( "mdViewer" ) ;
64+ }
65+ // For HTML/SVG files, check the live preview iframe src
66+ let outerIFrame = _getLivePreviewIFrame ( ) ;
67+ if ( ! outerIFrame || ! outerIFrame . src ) { return false ; }
3868 let srcURL = new URL ( outerIFrame . src ) ;
3969 return srcURL . pathname . endsWith ( name ) === true ;
4070 } , "waiting for name- " + name ) ;
71+ // Ensure md viewer is in reader mode for tests
72+ if ( name . endsWith ( ".md" ) ) {
73+ _ensureMdReaderMode ( ) ;
74+ await awaits ( 100 ) ;
75+ }
4176 }
4277
4378 if ( Phoenix . isTestWindowPlaywright && ! Phoenix . browser . desktop . isChromeBased ) {
@@ -873,13 +908,15 @@ define(function (require, exports, module) {
873908 await awaitsForDone ( SpecRunnerUtils . openProjectFiles ( [ "readme.md" ] ) ,
874909 "readme.md" ) ;
875910 await awaits ( 300 ) ;
876- let iFrame = testWindow . document . getElementById ( "panel-live-preview-frame" ) ;
877- expect ( iFrame . src . endsWith ( "readme.md" ) ) . toBeTrue ( ) ;
911+ _ensureMdReaderMode ( ) ;
912+ await awaits ( 100 ) ;
913+ let mdIFrame = _getMdPreviewIFrame ( ) ;
914+ expect ( mdIFrame && mdIFrame . src && mdIFrame . src . includes ( "mdViewer" ) ) . toBeTrue ( ) ;
878915
879916 await awaitsForDone ( SpecRunnerUtils . openProjectFiles ( [ SVG_IMAGE_PATH ] ) ,
880917 SVG_IMAGE_PATH ) ;
881918 await awaits ( 500 ) ;
882- iFrame = testWindow . document . getElementById ( "panel-live-preview-frame" ) ;
919+ let iFrame = _getLivePreviewIFrame ( ) ;
883920 let srcURL = new URL ( iFrame . src ) ;
884921 expect ( srcURL . pathname . endsWith ( SVG_IMAGE_PATH ) ) . toBeTrue ( ) ;
885922
@@ -988,16 +1025,18 @@ define(function (require, exports, module) {
9881025
9891026 await waitsForLiveDevelopmentToOpen ( ) ;
9901027
991- let iFrame = testWindow . document . getElementById ( "panel-live-preview-frame" ) ;
1028+ let iFrame = _getLivePreviewIFrame ( ) ;
9921029 expect ( iFrame . src . endsWith ( "simple1.html" ) ) . toBeTrue ( ) ;
9931030 await awaitsForDone ( SpecRunnerUtils . openProjectFiles ( [ "readme.md" ] ) ,
9941031 "readme.md" ) ;
9951032
9961033 // now make the active editor loose focus and click on the markdown md for it to
9971034 // trigger focus.
9981035 await awaits ( 300 ) ;
999- let outerIFrame = testWindow . document . getElementById ( "panel-live-preview-frame" ) ;
1000- expect ( outerIFrame . src . endsWith ( "readme.md" ) ) . toBeTrue ( ) ;
1036+ _ensureMdReaderMode ( ) ;
1037+ await awaits ( 100 ) ;
1038+ let outerIFrame = _getMdPreviewIFrame ( ) ;
1039+ expect ( outerIFrame && outerIFrame . src && outerIFrame . src . includes ( "mdViewer" ) ) . toBeTrue ( ) ;
10011040 outerIFrame . focus ( ) ;
10021041 expect ( testWindow . document . activeElement ) . toEqual ( outerIFrame ) ;
10031042 outerIFrame . contentWindow . postMessage ( {
@@ -1022,16 +1061,16 @@ define(function (require, exports, module) {
10221061
10231062 await waitsForLiveDevelopmentToOpen ( ) ;
10241063
1025- let iFrame = testWindow . document . getElementById ( "panel-live-preview-frame" ) ;
1064+ let iFrame = _getLivePreviewIFrame ( ) ;
10261065 expect ( iFrame . src . endsWith ( "simple1.html" ) ) . toBeTrue ( ) ;
10271066 await awaitsForDone ( SpecRunnerUtils . openProjectFiles ( [ "readme.md" ] ) ,
10281067 "readme.md" ) ;
10291068
10301069 // now make the active editor loose focus and click on the markdown md for it to
10311070 // trigger focus.
10321071 await awaits ( 300 ) ;
1033- let outerIFrame = testWindow . document . getElementById ( "panel-live-preview-frame" ) ;
1034- expect ( outerIFrame . src . endsWith ( "readme.md ") ) . toBeTrue ( ) ;
1072+ let outerIFrame = _getMdPreviewIFrame ( ) ;
1073+ expect ( outerIFrame && outerIFrame . src && outerIFrame . src . includes ( "mdViewer ") ) . toBeTrue ( ) ;
10351074 outerIFrame . focus ( ) ;
10361075 expect ( testWindow . document . activeElement ) . toEqual ( outerIFrame ) ;
10371076 // now select some /all text in the markdown and click
@@ -1070,8 +1109,8 @@ define(function (require, exports, module) {
10701109 "readme.md" ) ;
10711110
10721111 await awaits ( 300 ) ;
1073- let outerIFrame = testWindow . document . getElementById ( "panel-live-preview-frame" ) ;
1074- expect ( outerIFrame . src . endsWith ( "readme.md ") ) . toBeTrue ( ) ;
1112+ let outerIFrame = _getMdPreviewIFrame ( ) ;
1113+ expect ( outerIFrame && outerIFrame . src && outerIFrame . src . includes ( "mdViewer ") ) . toBeTrue ( ) ;
10751114
10761115 // todo check hrefs in markdown. currently we do not have mechanism to exec code image and markdown previews
10771116 // in future we should do this check too.
@@ -1174,8 +1213,8 @@ define(function (require, exports, module) {
11741213 "external proj/test.md" ) ;
11751214
11761215 await awaits ( 300 ) ;
1177- let outerIFrame = testWindow . document . getElementById ( "panel-live-preview-frame" ) ;
1178- expect ( outerIFrame . src . endsWith ( "test.md ") ) . toBeTrue ( ) ;
1216+ let outerIFrame = _getMdPreviewIFrame ( ) ;
1217+ expect ( outerIFrame && outerIFrame . src && outerIFrame . src . includes ( "mdViewer ") ) . toBeTrue ( ) ;
11791218 await endPreviewSession ( ) ;
11801219 } , 30000 ) ;
11811220
0 commit comments