Adds TCP prompt & storage access tests
This commit is contained in:
parent
61a3f26cba
commit
106b692c41
|
@ -0,0 +1,8 @@
|
|||
<html>
|
||||
<body>
|
||||
<h2>Cross-site cookies storage access test</h2>
|
||||
<h3>anti-tracker-test.com</h3>
|
||||
<h4>different site, cross-origin iframe</h4>
|
||||
<iframe width=500 height=1000 src="https://mozilla-mobile.github.io/testapp/anti-tracker-test_set_storage_with_sa_api.html"></iframe>
|
||||
</body>
|
||||
</html>
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
package org.mozilla.fenix.ui
|
||||
|
||||
import androidx.core.net.toUri
|
||||
import okhttp3.mockwebserver.MockWebServer
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
|
@ -13,7 +14,6 @@ import org.junit.Test
|
|||
import org.mozilla.fenix.customannotations.SmokeTest
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.helpers.AndroidAssetDispatcher
|
||||
import org.mozilla.fenix.helpers.ETPPolicy
|
||||
import org.mozilla.fenix.helpers.HomeActivityTestRule
|
||||
import org.mozilla.fenix.helpers.TestAssetHelper
|
||||
import org.mozilla.fenix.helpers.TestHelper.appContext
|
||||
|
@ -229,4 +229,36 @@ class EnhancedTrackingProtectionTest {
|
|||
viewTrackingContentBlockList()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun blockCookiesStorageAccessTest() {
|
||||
// With Standard TrackingProtection settings
|
||||
val page = mockWebServer.url("pages/cross-site-cookies.html").toString().toUri()
|
||||
val originSite = "https://mozilla-mobile.github.io"
|
||||
val currentSite = "http://localhost:${mockWebServer.port}"
|
||||
|
||||
navigationToolbar {
|
||||
}.enterURLAndEnterToBrowser(page) {
|
||||
}.clickRequestStorageAccessButton {
|
||||
verifyCrossOriginCookiesPermissionPrompt(originSite, currentSite)
|
||||
}.clickPagePermissionButton(allow = false) {
|
||||
verifyPageContent("access denied")
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun allowCookiesStorageAccessTest() {
|
||||
// With Standard TrackingProtection settings
|
||||
val page = mockWebServer.url("pages/cross-site-cookies.html").toString().toUri()
|
||||
val originSite = "https://mozilla-mobile.github.io"
|
||||
val currentSite = "http://localhost:${mockWebServer.port}"
|
||||
|
||||
navigationToolbar {
|
||||
}.enterURLAndEnterToBrowser(page) {
|
||||
}.clickRequestStorageAccessButton {
|
||||
verifyCrossOriginCookiesPermissionPrompt(originSite, currentSite)
|
||||
}.clickPagePermissionButton(allow = true) {
|
||||
verifyPageContent("access granted")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -821,6 +821,14 @@ class BrowserRobot {
|
|||
return SitePermissionsRobot.Transition()
|
||||
}
|
||||
|
||||
fun clickRequestStorageAccessButton(interact: SitePermissionsRobot.() -> Unit): SitePermissionsRobot.Transition {
|
||||
mDevice.findObject(UiSelector().text("requestStorageAccess()")).waitForExists(waitingTime)
|
||||
mDevice.findObject(UiSelector().text("requestStorageAccess()")).click()
|
||||
|
||||
SitePermissionsRobot().interact()
|
||||
return SitePermissionsRobot.Transition()
|
||||
}
|
||||
|
||||
fun openSiteSecuritySheet(interact: SiteSecurityRobot.() -> Unit): SiteSecurityRobot.Transition {
|
||||
siteSecurityToolbarButton().waitForExists(waitingTime)
|
||||
siteSecurityToolbarButton().clickAndWaitForNewWindow(waitingTime)
|
||||
|
|
|
@ -6,6 +6,7 @@ package org.mozilla.fenix.ui.robots
|
|||
|
||||
import androidx.test.espresso.Espresso.onView
|
||||
import androidx.test.espresso.assertion.ViewAssertions.matches
|
||||
import androidx.test.espresso.matcher.ViewMatchers
|
||||
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
|
||||
import androidx.test.espresso.matcher.ViewMatchers.withId
|
||||
import androidx.test.uiautomator.UiSelector
|
||||
|
@ -82,6 +83,16 @@ class SitePermissionsRobot {
|
|||
}
|
||||
}
|
||||
|
||||
fun verifyCrossOriginCookiesPermissionPrompt(originSite: String, currentSite: String) {
|
||||
mDevice.findObject(UiSelector().text("Allow $originSite to use its cookies on $currentSite?"))
|
||||
.waitForExists(waitingTime)
|
||||
onView(ViewMatchers.withText("Allow $originSite to use its cookies on $currentSite?")).check(matches(isDisplayed()))
|
||||
onView(ViewMatchers.withText("You may want to block access if it's not clear why $originSite needs this data.")).check(matches(isDisplayed()))
|
||||
onView(ViewMatchers.withText("Learn more")).check(matches(isDisplayed()))
|
||||
onView(ViewMatchers.withText("Block")).check(matches(isDisplayed()))
|
||||
onView(ViewMatchers.withText("Allow")).check(matches(isDisplayed()))
|
||||
}
|
||||
|
||||
fun selectRememberPermissionDecision() {
|
||||
onView(withId(R.id.do_not_ask_again))
|
||||
.check(matches(isDisplayed()))
|
||||
|
|
Loading…
Reference in New Issue