diff --git a/e2e/SideMenu.test.js b/e2e/SideMenu.test.js index 8e86ff9587..99417b9e62 100644 --- a/e2e/SideMenu.test.js +++ b/e2e/SideMenu.test.js @@ -3,89 +3,105 @@ import TestIDs from '../playground/src/testIDs'; const {elementByLabel, elementById, expectImagesToBeEqual} = Utils; -describe.each(['aboveContent', 'pushContent'])('SideMenu', (openMode) => { - beforeEach(async () => { - await device.launchApp({newInstance: true}); - await elementById(TestIDs.SIDE_MENU_BTN).tap(); - - if (openMode === 'aboveContent') { - await elementById(TestIDs.TOGGLE_SIDE_MENU_OPEN_MODE_BTN).tap(); - } - }); - - describe(`Open mode '${openMode}'`, () => { - it('close SideMenu and push to stack with static id', async () => { - await elementById(TestIDs.OPEN_LEFT_SIDE_MENU_BTN).tap(); - await elementById(TestIDs.LEFT_SIDE_MENU_PUSH_BTN).tap(); - await elementById(TestIDs.CLOSE_LEFT_SIDE_MENU_BTN).tap(); - await expect(elementById(TestIDs.PUSHED_SCREEN_HEADER)).toBeVisible(); - await elementById(TestIDs.POP_BTN).tap(); - await expect(elementById(TestIDs.CENTER_SCREEN_HEADER)).toBeVisible(); +describe('SideMenu', () => { + beforeEach(async () => { + await device.launchApp({newInstance : true}); + await elementById(TestIDs.SIDE_MENU_BTN).tap(); }); - it('Push to stack with static id and close SideMenu with screen options', async () => { - await elementById(TestIDs.OPEN_LEFT_SIDE_MENU_BTN).tap(); - await elementById(TestIDs.LEFT_SIDE_MENU_PUSH_AND_CLOSE_BTN).tap(); - await expect(elementById(TestIDs.PUSHED_SCREEN_HEADER)).toBeVisible(); - await elementById(TestIDs.POP_BTN).tap(); - await expect(elementById(TestIDs.CENTER_SCREEN_HEADER)).toBeVisible(); - }); + describe.each(['aboveContent', 'pushContent'])('Open mode %s', (openMode) => { + beforeEach(async () => { + if (openMode === 'pushContent') { + await elementById(TestIDs.TOGGLE_SIDE_MENU_OPEN_MODE_BTN).tap(); + } + }); - it('side menu visibility - left', async () => { - await elementById(TestIDs.OPEN_LEFT_SIDE_MENU_BTN).tap(); - await elementById(TestIDs.CLOSE_LEFT_SIDE_MENU_BTN).tap(); - await expect(elementById(TestIDs.CLOSE_LEFT_SIDE_MENU_BTN)).toBeNotVisible(); - }); + it('close SideMenu and push to stack with static id', async () => { + await elementById(TestIDs.OPEN_LEFT_SIDE_MENU_BTN).tap(); + await elementById(TestIDs.LEFT_SIDE_MENU_PUSH_BTN).tap(); + await elementById(TestIDs.CLOSE_LEFT_SIDE_MENU_BTN).tap(); + await expect(elementById(TestIDs.PUSHED_SCREEN_HEADER)).toBeVisible(); + await elementById(TestIDs.POP_BTN).tap(); + await expect(elementById(TestIDs.CENTER_SCREEN_HEADER)).toBeVisible(); + }); - it('side menu visibility - right', async () => { - await elementById(TestIDs.OPEN_RIGHT_SIDE_MENU_BTN).tap(); - await elementById(TestIDs.CLOSE_RIGHT_SIDE_MENU_BTN).tap(); - await expect(elementById(TestIDs.CLOSE_RIGHT_SIDE_MENU_BTN)).toBeNotVisible(); - }); + it('Push to stack with static id and close SideMenu with screen options', async () => { + await elementById(TestIDs.OPEN_LEFT_SIDE_MENU_BTN).tap(); + await elementById(TestIDs.LEFT_SIDE_MENU_PUSH_AND_CLOSE_BTN).tap(); + await expect(elementById(TestIDs.PUSHED_SCREEN_HEADER)).toBeVisible(); + await elementById(TestIDs.POP_BTN).tap(); + await expect(elementById(TestIDs.CENTER_SCREEN_HEADER)).toBeVisible(); + }); - it.e2e('should rotate', async () => { - await elementById(TestIDs.OPEN_LEFT_SIDE_MENU_BTN).tap(); - await device.setOrientation('landscape'); - await expect(elementById(TestIDs.LEFT_SIDE_MENU_PUSH_BTN)).toBeVisible(); - }); + it('side menu visibility - left', async () => { + await elementById(TestIDs.OPEN_LEFT_SIDE_MENU_BTN).tap(); + await elementById(TestIDs.CLOSE_LEFT_SIDE_MENU_BTN).tap(); + await expect(elementById(TestIDs.CLOSE_LEFT_SIDE_MENU_BTN)).toBeNotVisible(); + }); - it.e2e(':ios: rotation should update drawer height', async () => { - await elementById(TestIDs.OPEN_LEFT_SIDE_MENU_BTN).tap(); - await expect(elementByLabel('left drawer height: 869')).toBeVisible(); - await device.setOrientation('landscape'); - await expect(elementByLabel('left drawer height: 428')).toBeVisible(); - await device.setOrientation('portrait'); - await expect(elementByLabel('left drawer height: 869')).toBeVisible(); - }); + it('side menu visibility - right', async () => { + await elementById(TestIDs.OPEN_RIGHT_SIDE_MENU_BTN).tap(); + await elementById(TestIDs.CLOSE_RIGHT_SIDE_MENU_BTN).tap(); + await expect(elementById(TestIDs.CLOSE_RIGHT_SIDE_MENU_BTN)).toBeNotVisible(); + }); - it.e2e('should set left drawer width', async () => { - await elementById(TestIDs.OPEN_LEFT_SIDE_MENU_BTN).tap(); - await expect(elementById(TestIDs.SIDE_MENU_LEFT_DRAWER_HEIGHT_TEXT)).toBeVisible(); - await expect(elementByLabel('left drawer width: 250')).toBeVisible(); - }); + it.e2e('should rotate', async () => { + await elementById(TestIDs.OPEN_LEFT_SIDE_MENU_BTN).tap(); + await device.setOrientation('landscape'); + await expect(elementById(TestIDs.LEFT_SIDE_MENU_PUSH_BTN)).toBeVisible(); + }); - it.e2e('should change left drawer width', async () => { - await elementById(TestIDs.CHANGE_LEFT_SIDE_MENU_WIDTH_BTN).tap(); - await elementById(TestIDs.OPEN_LEFT_SIDE_MENU_BTN).tap(); - await expect(elementByLabel('left drawer width: 50')).toBeVisible(); - }); + it.e2e(':ios: rotation should update drawer height', async () => { + await elementById(TestIDs.OPEN_LEFT_SIDE_MENU_BTN).tap(); + await expect(elementByLabel('left drawer height: 869')).toBeVisible(); + await device.setOrientation('landscape'); + await expect(elementByLabel('left drawer height: 428')).toBeVisible(); + await device.setOrientation('portrait'); + await expect(elementByLabel('left drawer height: 869')).toBeVisible(); + }); - it.e2e('should set right drawer width', async () => { - await elementById(TestIDs.OPEN_RIGHT_SIDE_MENU_BTN).tap(); - await expect(elementByLabel('right drawer width: 250')).toBeVisible(); - }); + it.e2e('should set left drawer width', async () => { + await elementById(TestIDs.OPEN_LEFT_SIDE_MENU_BTN).tap(); + await expect(elementById(TestIDs.SIDE_MENU_LEFT_DRAWER_HEIGHT_TEXT)).toBeVisible(); + await expect(elementByLabel('left drawer width: 250')).toBeVisible(); + }); + + it.e2e('should change left drawer width', async () => { + await elementById(TestIDs.CHANGE_LEFT_SIDE_MENU_WIDTH_BTN).tap(); + await elementById(TestIDs.OPEN_LEFT_SIDE_MENU_BTN).tap(); + await expect(elementByLabel('left drawer width: 50')).toBeVisible(); + }); + + it.e2e('should set right drawer width', async () => { + await elementById(TestIDs.OPEN_RIGHT_SIDE_MENU_BTN).tap(); + await expect(elementByLabel('right drawer width: 250')).toBeVisible(); + }); - it.e2e('should change right drawer width', async () => { - await elementById(TestIDs.CHANGE_RIGHT_SIDE_MENU_WIDTH_BTN).tap(); - await elementById(TestIDs.OPEN_RIGHT_SIDE_MENU_BTN).tap(); - await expect(elementByLabel('right drawer width: 50')).toBeVisible(); + it.e2e('should change right drawer width', async () => { + await elementById(TestIDs.CHANGE_RIGHT_SIDE_MENU_WIDTH_BTN).tap(); + await elementById(TestIDs.OPEN_RIGHT_SIDE_MENU_BTN).tap(); + await expect(elementByLabel('right drawer width: 50')).toBeVisible(); + }); + + it.e2e(':ios: should render side menu correctly', async () => { + await elementById(TestIDs.OPEN_LEFT_SIDE_MENU_BTN).tap(); + const snapshottedImagePath = `./e2e/assets/side_menu.${openMode}.png`; + const actual = + await elementById('SideMenuContainer').takeScreenshot(`side_menu_${openMode}`); + expectImagesToBeEqual(actual, snapshottedImagePath); + }); }); - it.e2e(':ios: should render side menu correctly', async () => { - await elementById(TestIDs.OPEN_LEFT_SIDE_MENU_BTN).tap(); - const snapshottedImagePath = `./e2e/assets/side_menu.${openMode}.png`; - const actual = await elementById('SideMenuContainer').takeScreenshot(`side_menu_${openMode}`); - expectImagesToBeEqual(actual, snapshottedImagePath); + it.e2e(':ios: should open as push-content by default', async () => { + await elementById(TestIDs.TOGGLE_SIDE_MENU_OPEN_MODE_BTN).tap(); // aboveContent --> pushContent + await elementById(TestIDs.TOGGLE_SIDE_MENU_OPEN_MODE_BTN).tap(); // pushContent --> undefined + await expect(elementByLabel('Open mode: undefined')).toBeVisible(); + + await elementById(TestIDs.OPEN_LEFT_SIDE_MENU_BTN).tap(); + + const snapshottedImagePath = `./e2e/assets/side_menu.undefined.png`; + const actual = + await elementById('SideMenuContainer').takeScreenshot(`side_menu_undefined`); + expectImagesToBeEqual(actual, snapshottedImagePath); }); - }); }); diff --git a/e2e/assets/side_menu.undefined.png b/e2e/assets/side_menu.undefined.png new file mode 100644 index 0000000000..c97b309384 Binary files /dev/null and b/e2e/assets/side_menu.undefined.png differ diff --git a/playground/src/screens/SideMenuCenterScreen.tsx b/playground/src/screens/SideMenuCenterScreen.tsx index 68c59c1f8b..7e393cef6f 100644 --- a/playground/src/screens/SideMenuCenterScreen.tsx +++ b/playground/src/screens/SideMenuCenterScreen.tsx @@ -20,11 +20,11 @@ const { CHANGE_RIGHT_SIDE_MENU_WIDTH_BTN, DISABLE_DRAWERS, ENABLE_DRAWERS, - CENTER_SCREEN_CONTAINER + SIDE_MENU_CENTER_SCREEN_CONTAINER, } = testIDs; interface ScreenState { - openMode: 'aboveContent' | 'pushContent'; + openMode: 'aboveContent' | 'pushContent' | undefined; } export default class SideMenuCenterScreen extends NavigationComponent { @@ -58,7 +58,7 @@ export default class SideMenuCenterScreen extends NavigationComponent { constructor(props: NavigationProps) { super(props); this.state = { - openMode: 'pushContent', + openMode: 'aboveContent', }; Navigation.events().bindComponent(this); } @@ -69,17 +69,11 @@ export default class SideMenuCenterScreen extends NavigationComponent { } } - toggleAboveContent = () => { - this.setState((state: ScreenState) => ({ - openMode: state.openMode === 'pushContent' ? 'aboveContent' : 'pushContent', - })); - }; - render() { const { openMode } = this.state; return ( - +