@@ -3,7 +3,9 @@ import { ERROR_FLAG_EXISTS, ERROR_FLAG_INVALID } from '../../src/constants';
33import {
44 AddNewFlag ,
55 AddNewFlagAndFill ,
6+ CloseSdkModal ,
67 DisableFlag ,
8+ OpenSdkModal ,
79 SaveFlags ,
810 deleteLastFlag ,
911} from './helper' ;
@@ -24,12 +26,23 @@ test.describe('Feature flags', () => {
2426 ) . toBeVisible ( ) ;
2527 } ) ;
2628
27- test ( 'Create and delete flags e2e scenarios' , async ( { page } ) => {
28- //Create new flag
29- await AddNewFlagAndFill ( page , 'test' ) ;
29+ test . afterEach ( async ( { page } ) => {
30+ await deleteLastFlag ( page ) ;
31+ } ) ;
32+
33+ test ( 'Create and save new flag successfully' , async ( { page } ) => {
34+ await AddNewFlagAndFill ( page , 'hello_test' ) ;
35+ await SaveFlags ( page ) ;
36+
37+ expect (
38+ await page . getByLabel ( 'Dismiss this notice' ) . innerText ( )
39+ ) . toMatch ( / S a v e d s u c c e s s f u l l y ! / ) ;
40+ } ) ;
41+
42+ test ( 'Create new flag and disable it successfully' , async ( { page } ) => {
43+ await AddNewFlagAndFill ( page , 'test123' ) ;
3044 await SaveFlags ( page ) ;
3145
32- //Confirm save success
3346 expect (
3447 await page . getByLabel ( 'Dismiss this notice' ) . innerText ( )
3548 ) . toMatch ( / S a v e d s u c c e s s f u l l y ! / ) ;
@@ -45,55 +58,70 @@ test.describe('Feature flags', () => {
4558 . last ( )
4659 . getByLabel ( 'Flag disabled' )
4760 ) . toBeVisible ( ) ;
61+ } ) ;
62+
63+ test ( 'Check duplicate and invalid flag' , async ( { page } ) => {
64+ //Create new flag
65+ await AddNewFlagAndFill ( page , 'testDuplicate' ) ;
66+ await SaveFlags ( page ) ;
67+
68+ //Confirm save success
69+ expect (
70+ await page . getByLabel ( 'Dismiss this notice' ) . innerText ( )
71+ ) . toMatch ( / S a v e d s u c c e s s f u l l y ! / ) ;
4872
49- //Create another flag with same name
50- await AddNewFlagAndFill ( page , 'test ' ) ;
73+ //Create another flag with same name should show error
74+ await AddNewFlagAndFill ( page , 'testDuplicate ' ) ;
5175 expect ( page . getByText ( ERROR_FLAG_EXISTS ) ) . toBeVisible ( ) ;
5276 expect ( page . getByRole ( 'button' , { name : 'Save' } ) ) . toBeDisabled ( ) ;
5377
54- //update flag name to be unique and check text validation.
55- await AddNewFlag ( page , 'test 2 ' ) ;
78+ //update flag name to be unique but still invalid
79+ await AddNewFlag ( page , 'test duplicate ' ) ;
5680 expect ( page . getByText ( ERROR_FLAG_INVALID ) ) . toBeVisible ( ) ;
5781 expect ( page . getByRole ( 'button' , { name : 'Save' } ) ) . toBeDisabled ( ) ;
5882
5983 //Delete the flag
60- await page
61- . locator ( 'id=mr-feature-flag-item' )
62- . last ( )
63- . getByLabel ( 'Delete Flag' )
64- . click ( ) ;
65- // await deleteLastFlag(page);
66- await page . getByRole ( 'button' , { name : 'Yes' } ) . click ( ) ;
67- //Confirm delete success
84+ await deleteLastFlag ( page ) ;
85+
6886 expect (
6987 await page . getByLabel ( 'Dismiss this notice' ) . innerText ( )
7088 ) . toMatch ( / S a v e d s u c c e s s f u l l y ! / ) ;
89+ } ) ;
90+
91+ test ( 'Open SDK modal and test the clipboard' , async ( { page } ) => {
92+ const flagName = 'testWidget' ;
93+ await AddNewFlagAndFill ( page , flagName ) ;
94+ await SaveFlags ( page ) ;
7195
72- //Check SDK modal details.
73- await page . getByLabel ( 'Click to see SDK setting' ) . last ( ) . click ( ) ;
7496 expect (
75- page . getByRole ( 'heading' , { name : 'SDK for feature flag: test' } )
97+ await page . getByLabel ( 'Dismiss this notice' ) . innerText ( )
98+ ) . toMatch ( / S a v e d s u c c e s s f u l l y ! / ) ;
99+
100+ await OpenSdkModal ( page ) ;
101+
102+ expect (
103+ page . getByRole ( 'heading' , {
104+ name : `SDK for feature flag: ${ flagName } ` ,
105+ } )
76106 ) . toBeVisible ( ) ;
77107
78108 // Check PHP Snippet clipboard details
79109 await page . getByLabel ( 'Copy to clipboard' ) . first ( ) . click ( ) ;
80110 const phpClipboardText = await page . evaluate (
81111 'navigator.clipboard.readText()'
82112 ) ;
83- expect ( phpClipboardText ) . toContain ( " Flag::is_enabled( 'test ' )" ) ;
113+ expect ( phpClipboardText ) . toContain ( ` Flag::is_enabled( '${ flagName } ' )` ) ;
84114
85115 // Check JS Snippet clipboard details
86116 await page . getByLabel ( 'Copy to clipboard' ) . nth ( 1 ) . click ( ) ;
87117 const jsClipboardText : string = await page . evaluate (
88118 'navigator.clipboard.readText()'
89119 ) ;
90120 expect ( jsClipboardText ) . toContain (
91- " window.mrFeatureFlags.isEnabled('test')"
121+ ` window.mrFeatureFlags.isEnabled('${ flagName } ')`
92122 ) ;
93- //Close SDK modal
94- await page . locator ( 'button[aria-label="Close"]' ) . click ( ) ;
95123
96- //Delete the created flag
97- await deleteLastFlag ( page ) ;
124+ //Close SDK modal
125+ await CloseSdkModal ( page ) ;
98126 } ) ;
99127} ) ;
0 commit comments