66 mockedDocument ,
77 verifyDocName ,
88} from './utils-common' ;
9+ import { openSuggestionMenu , writeInEditor } from './utils-editor' ;
910
1011test . beforeEach ( async ( { page } ) => {
1112 await page . goto ( '/' ) ;
@@ -17,6 +18,7 @@ test.describe('Doc Version', () => {
1718
1819 await verifyDocName ( page , randomDoc ) ;
1920
21+ // Initially, there is no version
2022 await page . getByLabel ( 'Open the document options' ) . click ( ) ;
2123 await page . getByRole ( 'menuitem' , { name : 'Version history' } ) . click ( ) ;
2224 await expect ( page . getByText ( 'History' , { exact : true } ) ) . toBeVisible ( ) ;
@@ -26,31 +28,49 @@ test.describe('Doc Version', () => {
2628 await expect ( panel ) . toBeVisible ( ) ;
2729 await expect ( modal . getByText ( 'No versions' ) ) . toBeVisible ( ) ;
2830
29- const editor = page . locator ( '.ProseMirror' ) ;
3031 await modal . getByRole ( 'button' , { name : 'close' } ) . click ( ) ;
31- await editor . click ( ) ;
32- await page . keyboard . type ( '# Hello World' ) ;
3332
33+ await writeInEditor ( { page, text : 'Hello World' } ) ;
34+
35+ // It will trigger a save, no version created yet (initial version is not counted)
3436 await goToGridDoc ( page , {
3537 title : randomDoc ,
3638 } ) ;
3739
38- await expect (
39- page . getByRole ( 'heading' , { name : 'Hello World' } ) ,
40- ) . toBeVisible ( ) ;
40+ await expect ( page . getByText ( 'Hello World' ) ) . toBeVisible ( ) ;
41+
42+ // Write more
43+ await writeInEditor ( { page, text : 'It will create a version' } ) ;
44+
45+ await openSuggestionMenu ( { page } ) ;
46+ await page . getByText ( 'Add a callout block' ) . click ( ) ;
47+
48+ const calloutBlock = page
49+ . locator ( 'div[data-content-type="callout"]' )
50+ . first ( ) ;
4151
42- await page
43- . locator ( '.ProseMirror .bn-block' )
44- . getByRole ( 'heading' , { name : 'Hello World' } )
45- . fill ( 'It will create a version' ) ;
52+ await expect ( calloutBlock ) . toBeVisible ( ) ;
4653
54+ // It will trigger a save and create a version this time
4755 await goToGridDoc ( page , {
4856 title : randomDoc ,
4957 } ) ;
5058
5159 await expect ( page . getByText ( 'Hello World' ) ) . toBeHidden ( ) ;
60+ await expect ( page . getByText ( 'It will create a version' ) ) . toBeVisible ( ) ;
61+
62+ await expect ( calloutBlock ) . toBeVisible ( ) ;
63+
64+ // Write more
65+ await writeInEditor ( { page, text : 'It will create a second version' } ) ;
66+
67+ // It will trigger a save and create a second version
68+ await goToGridDoc ( page , {
69+ title : randomDoc ,
70+ } ) ;
71+
5272 await expect (
53- page . getByRole ( 'heading' , { name : ' It will create a version' } ) ,
73+ page . getByText ( ' It will create a second version') ,
5474 ) . toBeVisible ( ) ;
5575
5676 await page . getByLabel ( 'Open the document options' ) . click ( ) ;
@@ -60,11 +80,33 @@ test.describe('Doc Version', () => {
6080 await expect ( page . getByText ( 'History' , { exact : true } ) ) . toBeVisible ( ) ;
6181 await expect ( page . getByRole ( 'status' ) ) . toBeHidden ( ) ;
6282 const items = await panel . locator ( '.version-item' ) . all ( ) ;
63- expect ( items . length ) . toBe ( 1 ) ;
83+ expect ( items . length ) . toBe ( 2 ) ;
84+ await items [ 1 ] . click ( ) ;
85+
86+ await expect ( modal . getByText ( 'Hello World' ) ) . toBeVisible ( ) ;
87+ await expect ( modal . getByText ( 'It will create a version' ) ) . toBeHidden ( ) ;
88+ await expect (
89+ modal . locator ( 'div[data-content-type="callout"]' ) . first ( ) ,
90+ ) . toBeHidden ( ) ;
91+
6492 await items [ 0 ] . click ( ) ;
6593
94+ await expect ( modal . getByText ( 'Hello World' ) ) . toBeVisible ( ) ;
95+ await expect ( modal . getByText ( 'It will create a version' ) ) . toBeVisible ( ) ;
96+ await expect (
97+ modal . locator ( 'div[data-content-type="callout"]' ) . first ( ) ,
98+ ) . toBeVisible ( ) ;
99+ await expect (
100+ modal . getByText ( 'It will create a second version' ) ,
101+ ) . toBeHidden ( ) ;
102+
103+ await items [ 1 ] . click ( ) ;
104+
66105 await expect ( modal . getByText ( 'Hello World' ) ) . toBeVisible ( ) ;
67106 await expect ( modal . getByText ( 'It will create a version' ) ) . toBeHidden ( ) ;
107+ await expect (
108+ modal . locator ( 'div[data-content-type="callout"]' ) . first ( ) ,
109+ ) . toBeHidden ( ) ;
68110 } ) ;
69111
70112 test ( 'it does not display the doc versions if not allowed' , async ( {
0 commit comments