From ff6e060e033c219f96eadfa0afe766c096c4eb58 Mon Sep 17 00:00:00 2001 From: Oana Horvath Date: Thu, 20 Jan 2022 12:24:56 +0200 Subject: [PATCH] [fenix] [UI smoke test] For https://github.com/mozilla-mobile/fenix/issues/21002: Ads new audio-video permissions test --- .../mozilla/fenix/ui/SitePermissionsTest.kt | 90 +++++++++++++++++-- .../mozilla/fenix/ui/robots/BrowserRobot.kt | 11 +++ .../fenix/ui/robots/SitePermissionsRobot.kt | 9 ++ 3 files changed, 103 insertions(+), 7 deletions(-) diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/SitePermissionsTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/SitePermissionsTest.kt index 750a1d272e..66111daa5b 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/SitePermissionsTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/SitePermissionsTest.kt @@ -26,6 +26,89 @@ class SitePermissionsTest { val activityTestRule = HomeActivityIntentTestRule() @SmokeTest + @Test + fun audioVideoPermissionChoiceOnEachRequestTest() { + navigationToolbar { + }.enterURLAndEnterToBrowser(testPage.toUri()) { + waitForPageToLoad() + }.clickStartAudioVideoButton { + // allow app to record video + clickAppPermissionButton(true) + // allow app to record audio + clickAppPermissionButton(true) + verifyAudioVideoPermissionPrompt(testPageSubstring) + }.clickPagePermissionButton(false) { + verifyPageContent("Camera and Microphone not allowed") + }.clickStartAudioVideoButton { + }.clickPagePermissionButton(true) { + verifyPageContent("Camera and Microphone allowed") + } + } + + @SmokeTest + @Test + fun rememberBlockAudioVideoPermissionChoiceTest() { + navigationToolbar { + }.enterURLAndEnterToBrowser(testPage.toUri()) { + waitForPageToLoad() + }.clickStartAudioVideoButton { + // allow app to record video + clickAppPermissionButton(true) + // allow app to record audio + clickAppPermissionButton(true) + verifyAudioVideoPermissionPrompt(testPageSubstring) + selectRememberPermissionDecision() + }.clickPagePermissionButton(false) { + verifyPageContent("Camera and Microphone not allowed") + }.openThreeDotMenu { + }.refreshPage { + waitForPageToLoad() + }.clickStartAudioVideoButton { } + browserScreen { + verifyPageContent("Camera and Microphone not allowed") + } + } + + @SmokeTest + @Test + fun rememberAllowAudioVideoPermissionChoiceTest() { + navigationToolbar { + }.enterURLAndEnterToBrowser(testPage.toUri()) { + waitForPageToLoad() + }.clickStartAudioVideoButton { + // allow app to record video + clickAppPermissionButton(true) + // allow app to record audio + clickAppPermissionButton(true) + verifyAudioVideoPermissionPrompt(testPageSubstring) + selectRememberPermissionDecision() + }.clickPagePermissionButton(true) { + verifyPageContent("Camera and Microphone allowed") + }.openThreeDotMenu { + }.refreshPage { + waitForPageToLoad() + }.clickStartAudioVideoButton { } + browserScreen { + verifyPageContent("Camera and Microphone allowed") + } + } + + @SmokeTest + @Test + fun blockAppUsingAudioVideoTest() { + navigationToolbar { + }.enterURLAndEnterToBrowser(testPage.toUri()) { + }.clickStartAudioVideoButton { + // allow app to record video + clickAppPermissionButton(false) + // allow app to record audio + clickAppPermissionButton(false) + } + browserScreen { + verifyPageContent("Camera and Microphone not allowed") + } + } + @Test fun microphonePermissionChoiceOnEachRequestTest() { navigationToolbar { @@ -42,7 +125,6 @@ class SitePermissionsTest { } } - @SmokeTest @Test fun rememberBlockMicrophonePermissionChoiceTest() { navigationToolbar { @@ -64,7 +146,6 @@ class SitePermissionsTest { } @Ignore("Flaky, needs investigation: https://github.com/mozilla-mobile/fenix/issues/23298") - @SmokeTest @Test fun rememberAllowMicrophonePermissionChoiceTest() { navigationToolbar { @@ -85,7 +166,6 @@ class SitePermissionsTest { } } - @SmokeTest @Test fun blockAppUsingMicrophoneTest() { navigationToolbar { @@ -98,7 +178,6 @@ class SitePermissionsTest { } } - @SmokeTest @Test fun cameraPermissionChoiceOnEachRequestTest() { navigationToolbar { @@ -115,7 +194,6 @@ class SitePermissionsTest { } } - @SmokeTest @Test fun rememberBlockCameraPermissionChoiceTest() { navigationToolbar { @@ -136,7 +214,6 @@ class SitePermissionsTest { } } - @SmokeTest @Test fun rememberAllowCameraPermissionChoiceTest() { navigationToolbar { @@ -157,7 +234,6 @@ class SitePermissionsTest { } } - @SmokeTest @Test fun blockAppUsingCameraTest() { navigationToolbar { diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BrowserRobot.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BrowserRobot.kt index 2745bda460..c3c89f6109 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BrowserRobot.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/BrowserRobot.kt @@ -685,6 +685,15 @@ class BrowserRobot { return SitePermissionsRobot.Transition() } + fun clickStartAudioVideoButton(interact: SitePermissionsRobot.() -> Unit): SitePermissionsRobot.Transition { + // Test page used for testing permissions located at https://mozilla-mobile.github.io/testapp/permissions + audioVideoButton.waitForExists(waitingTime) + audioVideoButton.click() + + SitePermissionsRobot().interact() + return SitePermissionsRobot.Transition() + } + fun clickOpenNotificationButton(interact: SitePermissionsRobot.() -> Unit): SitePermissionsRobot.Transition { // Test page used for testing permissions located at https://mozilla-mobile.github.io/testapp/permissions notificationButton.waitForExists(waitingTime) @@ -757,6 +766,8 @@ private val cameraButton = mDevice.findObject(UiSelector().text("Open camera")) private val microphoneButton = mDevice.findObject(UiSelector().text("Open microphone")) +private val audioVideoButton = mDevice.findObject(UiSelector().text("Camera & Microphone")) + private val notificationButton = mDevice.findObject(UiSelector().text("Open notifications dialogue")) private val getLocationButton = mDevice.findObject(UiSelector().text("Get Location")) diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/SitePermissionsRobot.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/SitePermissionsRobot.kt index 57168cff6a..717904b0a1 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/robots/SitePermissionsRobot.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/robots/SitePermissionsRobot.kt @@ -46,6 +46,15 @@ class SitePermissionsRobot { assertTrue(allowPagePermissionButton.text.equals("Allow")) } + fun verifyAudioVideoPermissionPrompt(url: String) { + assertTrue( + mDevice.findObject(UiSelector().text("Allow $url to use your camera and microphone?")) + .waitForExists(waitingTime) + ) + assertTrue(denyPagePermissionButton.text.equals("Don’t allow")) + assertTrue(allowPagePermissionButton.text.equals("Allow")) + } + fun verifyLocationPermissionPrompt(url: String) { assertTrue( mDevice.findObject(UiSelector().text("Allow $url to use your location?"))