For #16615: UI smoke test customTrackingProtectionSettingsTest

upstream-sync
Oana Horvath 3 years ago
parent a4a2a59b7d
commit 9783930ac5

@ -9,5 +9,71 @@
</head> </head>
<body> <body>
<iframe src="http://trackertest.org/"></iframe> <iframe src="http://trackertest.org/"></iframe>
<h3>Level 1 (Basic) List</h3>
<p>social-track-digest256:</p>
<img
src="https://social-track-digest256.dummytracker.org/test_not_blocked.png"
onerror="this.onerror=null;this.src='https://not-a-tracker.dummytracker.org/test_blocked.png'">
<br/>
<p>ads-track-digest256:</p>
<img
src="https://ads-track-digest256.dummytracker.org/test_not_blocked.png"
onerror="this.onerror=null;this.src='https://not-a-tracker.dummytracker.org/test_blocked.png'">
<br/>
<p>analytics-track-digest256:</p>
<img
src="https://analytics-track-digest256.dummytracker.org/test_not_blocked.png"
onerror="this.onerror=null;this.src='https://not-a-tracker.dummytracker.org/test_blocked.png'">
<br/>
<p>Fingerprinting:
<pre id="result">test not run</pre>
<script src="https://base-fingerprinting-track-digest256.dummytracker.org/tracker.js"
onerror="this.onerror=null;var result=document.getElementById('result');result.innerHTML='blocked';"
onload="this.onload=null;var result=document.getElementById('result');result.innerHTML='NOT blocked';"
></script>
</p>
<br/>
<p>Cryptomining:
<img
src="https://base-cryptomining-track-digest256.dummytracker.org/test_not_blocked.png" alt="not blocked"
onerror="this.onerror=null;this.src='https://not-a-tracker.dummytracker.org/test_blocked.png';this.alt='blocked'">
</p>
<p><b>Cookie blocking</b>
</p>
<iframe height=0 width=0 src="https://social-tracking-protection-facebook-digest256.dummytracker.org/cookie_access_test.html?test_origin=senglehardt.com"></iframe>
<iframe height=0 width=0 src="https://social-tracking-protection-linkedin-digest256.dummytracker.org/cookie_access_test.html?test_origin=senglehardt.com"></iframe>
<iframe height=0 width=0 src="https://social-tracking-protection-twitter-digest256.dummytracker.org/cookie_access_test.html?test_origin=senglehardt.com"></iframe>
<p>
* Facebook-cookies <pre id="social-tracking-protection-facebook-digest256"></pre>
* LinkedIn-cookies <pre id="social-tracking-protection-linkedin-digest256"></pre>
* Twitter-cookies <pre id="social-tracking-protection-twitter-digest256"></pre>
</p>
<script>
function updateCookieStatus(statusMessage, list) {
var output = document.getElementById(list);
if (statusMessage === 'cookies') {
output.innerHTML = "Cookies not blocked";
} else if (statusMessage === 'no_cookies') {
output.innerHTML = "Blocked";
} else {
output.innerHTML = "Unrecognized status";
}
}
window.addEventListener("message", event => {
lists = [
'social-tracking-protection-facebook-digest256',
'social-tracking-protection-linkedin-digest256',
'social-tracking-protection-twitter-digest256'
];
lists.forEach(list => {
if (event.origin === `https://${list}.dummytracker.org`) {
updateCookieStatus(event.data, list);
}
});
}, false);
</script>
</body> </body>
</html> </html>

@ -28,6 +28,7 @@ import org.mozilla.fenix.helpers.ViewVisibilityIdlingResource
import org.mozilla.fenix.ui.robots.browserScreen import org.mozilla.fenix.ui.robots.browserScreen
import org.mozilla.fenix.ui.robots.clickTabCrashedRestoreButton import org.mozilla.fenix.ui.robots.clickTabCrashedRestoreButton
import org.mozilla.fenix.ui.robots.clickUrlbar import org.mozilla.fenix.ui.robots.clickUrlbar
import org.mozilla.fenix.ui.robots.dismissTrackingOnboarding
import org.mozilla.fenix.ui.robots.downloadRobot import org.mozilla.fenix.ui.robots.downloadRobot
import org.mozilla.fenix.ui.robots.enhancedTrackingProtection import org.mozilla.fenix.ui.robots.enhancedTrackingProtection
import org.mozilla.fenix.ui.robots.homeScreen import org.mozilla.fenix.ui.robots.homeScreen
@ -372,7 +373,7 @@ class SmokeTest {
}.openThreeDotMenu { }.openThreeDotMenu {
}.openSettings { }.openSettings {
}.openEnhancedTrackingProtectionSubMenu { }.openEnhancedTrackingProtectionSubMenu {
clickEnhancedTrackingProtectionDefaults() switchEnhancedTrackingProtectionToggle()
verifyEnhancedTrackingProtectionOptionsGrayedOut() verifyEnhancedTrackingProtectionOptionsGrayedOut()
}.goBackToHomeScreen { }.goBackToHomeScreen {
navigationToolbar { navigationToolbar {
@ -381,7 +382,7 @@ class SmokeTest {
}.openThreeDotMenu { }.openThreeDotMenu {
}.openSettings { }.openSettings {
}.openEnhancedTrackingProtectionSubMenu { }.openEnhancedTrackingProtectionSubMenu {
clickEnhancedTrackingProtectionDefaults() switchEnhancedTrackingProtectionToggle()
}.goBack { }.goBack {
}.goBackToBrowser { }.goBackToBrowser {
clickEnhancedTrackingProtectionPanel() clickEnhancedTrackingProtectionPanel()
@ -391,6 +392,32 @@ class SmokeTest {
} }
} }
@Test
fun customTrackingProtectionSettingsTest() {
val trackingPage = TestAssetHelper.getEnhancedTrackingProtectionAsset(mockWebServer)
homeScreen {
}.openThreeDotMenu {
}.openSettings {
}.openEnhancedTrackingProtectionSubMenu {
verifyEnhancedTrackingProtectionOptions()
selectTrackingProtectionOption("Custom")
verifyCustomTrackingProtectionSettings()
}.goBackToHomeScreen {}
navigationToolbar {
}.enterURLAndEnterToBrowser(trackingPage.url) {}
enhancedTrackingProtection {
dismissTrackingOnboarding()
}.openEnhancedTrackingProtectionSheet {
verifyTrackingCookiesBlocked()
verifyCryptominersBlocked()
verifyFingerprintersBlocked()
verifyBasicLevelTrackingContentBlocked()
}
}
@Test @Test
// Verifies changing the default engine from the Search Shortcut menu // Verifies changing the default engine from the Search Shortcut menu
fun verifySearchEngineCanBeChangedTemporarilyUsingShortcuts() { fun verifySearchEngineCanBeChangedTemporarilyUsingShortcuts() {

@ -70,7 +70,7 @@ class StrictEnhancedTrackingProtectionTest {
}.openEnhancedTrackingProtectionSubMenu { }.openEnhancedTrackingProtectionSubMenu {
verifyEnhancedTrackingProtectionHeader() verifyEnhancedTrackingProtectionHeader()
verifyEnhancedTrackingProtectionOptions() verifyEnhancedTrackingProtectionOptions()
verifyEnhancedTrackingProtectionDefaults() verifyTrackingProtectionSwitchEnabled()
}.openExceptions { }.openExceptions {
verifyDefault() verifyDefault()
} }
@ -177,7 +177,7 @@ class StrictEnhancedTrackingProtectionTest {
}.openProtectionSettings { }.openProtectionSettings {
verifyEnhancedTrackingProtectionHeader() verifyEnhancedTrackingProtectionHeader()
verifyEnhancedTrackingProtectionOptions() verifyEnhancedTrackingProtectionOptions()
verifyEnhancedTrackingProtectionDefaults() verifyTrackingProtectionSwitchEnabled()
} }
settingsSubMenuEnhancedTrackingProtection { settingsSubMenuEnhancedTrackingProtection {

@ -8,13 +8,20 @@ package org.mozilla.fenix.ui.robots
import androidx.test.espresso.Espresso.onView import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.assertion.ViewAssertions import androidx.test.espresso.assertion.ViewAssertions
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.matcher.ViewMatchers import androidx.test.espresso.matcher.ViewMatchers
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
import androidx.test.espresso.matcher.ViewMatchers.withId
import androidx.test.espresso.matcher.ViewMatchers.withText
import androidx.test.platform.app.InstrumentationRegistry import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.uiautomator.By import androidx.test.uiautomator.By
import androidx.test.uiautomator.UiDevice import androidx.test.uiautomator.UiDevice
import androidx.test.uiautomator.UiSelector
import androidx.test.uiautomator.Until import androidx.test.uiautomator.Until
import org.hamcrest.Matchers.containsString
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.helpers.TestAssetHelper import org.mozilla.fenix.helpers.TestAssetHelper
import org.mozilla.fenix.helpers.TestAssetHelper.waitingTime
import org.mozilla.fenix.helpers.TestHelper.packageName import org.mozilla.fenix.helpers.TestHelper.packageName
import org.mozilla.fenix.helpers.click import org.mozilla.fenix.helpers.click
import org.mozilla.fenix.helpers.ext.waitNotNull import org.mozilla.fenix.helpers.ext.waitNotNull
@ -37,6 +44,14 @@ class EnhancedTrackingProtectionRobot {
fun verifyEnhancedTrackingProtectionDetailsStatus(status: String) = fun verifyEnhancedTrackingProtectionDetailsStatus(status: String) =
assertEnhancedTrackingProtectionDetailsStatus(status) assertEnhancedTrackingProtectionDetailsStatus(status)
fun verifyTrackingCookiesBlocked() = assertTrackingCookiesBlocked()
fun verifyFingerprintersBlocked() = assertFingerprintersBlocked()
fun verifyCryptominersBlocked() = assertCryptominersBlocked()
fun verifyBasicLevelTrackingContentBlocked() = assertBasicLevelTrackingContentBlocked()
class Transition { class Transition {
fun openEnhancedTrackingProtectionSheet(interact: EnhancedTrackingProtectionRobot.() -> Unit): Transition { fun openEnhancedTrackingProtectionSheet(interact: EnhancedTrackingProtectionRobot.() -> Unit): Transition {
openEnhancedTrackingProtectionSheet().click() openEnhancedTrackingProtectionSheet().click()
@ -129,3 +144,45 @@ private fun openEnhancedTrackingProtectionSettings() =
private fun openEnhancedTrackingProtectionDetails() = private fun openEnhancedTrackingProtectionDetails() =
onView(ViewMatchers.withId(R.id.tracking_content)) onView(ViewMatchers.withId(R.id.tracking_content))
private fun assertTrackingCookiesBlocked() {
mDevice.findObject(UiSelector().resourceId("$packageName:id/cross_site_tracking"))
.waitForExists(waitingTime)
onView(withId(R.id.blocking_header)).check(matches(isDisplayed()))
onView(withId(R.id.cross_site_tracking)).check(matches(isDisplayed()))
}
private fun assertFingerprintersBlocked() {
mDevice.findObject(UiSelector().resourceId("$packageName:id/fingerprinters"))
.waitForExists(waitingTime)
onView(withId(R.id.blocking_header)).check(matches(isDisplayed()))
onView(withId(R.id.fingerprinters)).check(matches(isDisplayed()))
}
private fun assertCryptominersBlocked() {
mDevice.findObject(UiSelector().resourceId("$packageName:id/cryptominers"))
.waitForExists(waitingTime)
onView(withId(R.id.blocking_header)).check(matches(isDisplayed()))
onView(withId(R.id.cryptominers)).check(matches(isDisplayed()))
}
private fun assertBasicLevelTrackingContentBlocked() {
mDevice.findObject(UiSelector().resourceId("$packageName:id/tracking_content"))
.waitForExists(waitingTime)
onView(withId(R.id.tracking_content))
.check(matches(isDisplayed()))
.click()
onView(withId(R.id.blocking_text_list))
.check(
matches(
withText(
containsString(
"social-track-digest256.dummytracker.org\n" +
"ads-track-digest256.dummytracker.org\n" +
"analytics-track-digest256.dummytracker.org"
)
)
)
)
}

@ -13,6 +13,7 @@ import androidx.test.espresso.contrib.RecyclerViewActions
import androidx.test.espresso.matcher.ViewMatchers.hasDescendant import androidx.test.espresso.matcher.ViewMatchers.hasDescendant
import androidx.test.espresso.matcher.ViewMatchers.hasSibling import androidx.test.espresso.matcher.ViewMatchers.hasSibling
import androidx.test.espresso.matcher.ViewMatchers.Visibility import androidx.test.espresso.matcher.ViewMatchers.Visibility
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
import androidx.test.espresso.matcher.ViewMatchers.withChild import androidx.test.espresso.matcher.ViewMatchers.withChild
import androidx.test.espresso.matcher.ViewMatchers.withContentDescription import androidx.test.espresso.matcher.ViewMatchers.withContentDescription
import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility import androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility
@ -25,6 +26,7 @@ import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.uiautomator.UiDevice import androidx.test.uiautomator.UiDevice
import org.hamcrest.CoreMatchers.allOf import org.hamcrest.CoreMatchers.allOf
import org.hamcrest.CoreMatchers.not import org.hamcrest.CoreMatchers.not
import org.mozilla.fenix.helpers.TestHelper.scrollToElementByText
import org.mozilla.fenix.helpers.assertIsChecked import org.mozilla.fenix.helpers.assertIsChecked
import org.mozilla.fenix.helpers.click import org.mozilla.fenix.helpers.click
import org.mozilla.fenix.helpers.isChecked import org.mozilla.fenix.helpers.isChecked
@ -49,9 +51,9 @@ class SettingsSubMenuEnhancedTrackingProtectionRobot {
fun verifyEnhancedTrackingProtectionOptionsGrayedOut() = assertEnhancedTrackingProtectionOptionsGrayedOut() fun verifyEnhancedTrackingProtectionOptionsGrayedOut() = assertEnhancedTrackingProtectionOptionsGrayedOut()
fun verifyEnhancedTrackingProtectionDefaults() = assertEnhancedTrackingProtectionDefaults() fun verifyTrackingProtectionSwitchEnabled() = assertTrackingProtectionSwitchEnabled()
fun clickEnhancedTrackingProtectionDefaults() = onView(withResourceName("switch_widget")).click() fun switchEnhancedTrackingProtectionToggle() = onView(withResourceName("switch_widget")).click()
fun verifyRadioButtonDefaults() = assertRadioButtonDefaults() fun verifyRadioButtonDefaults() = assertRadioButtonDefaults()
@ -60,11 +62,15 @@ class SettingsSubMenuEnhancedTrackingProtectionRobot {
verifyEnhancedTrackingProtectionHeaderDescription() verifyEnhancedTrackingProtectionHeaderDescription()
verifyLearnMoreText() verifyLearnMoreText()
verifyEnhancedTrackingProtectionTextWithSwitchWidget() verifyEnhancedTrackingProtectionTextWithSwitchWidget()
verifyEnhancedTrackingProtectionDefaults() verifyTrackingProtectionSwitchEnabled()
verifyRadioButtonDefaults() verifyRadioButtonDefaults()
verifyEnhancedTrackingProtectionOptions() verifyEnhancedTrackingProtectionOptions()
} }
fun verifyCustomTrackingProtectionSettings() = assertCustomTrackingProtectionSettings()
fun selectTrackingProtectionOption(option: String) = onView(withText(option)).click()
class Transition { class Transition {
val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())!! val mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())!!
@ -183,7 +189,7 @@ private fun assertEnhancedTrackingProtectionOptionsGrayedOut() {
.check(matches(not(isEnabled(true)))) .check(matches(not(isEnabled(true))))
} }
private fun assertEnhancedTrackingProtectionDefaults() { private fun assertTrackingProtectionSwitchEnabled() {
onView(withResourceName("switch_widget")).check( onView(withResourceName("switch_widget")).check(
matches( matches(
isChecked( isChecked(
@ -218,3 +224,28 @@ private fun goBackButton() =
private fun openExceptions() = private fun openExceptions() =
onView(allOf(withText("Exceptions"))) onView(allOf(withText("Exceptions")))
private fun assertCustomTrackingProtectionSettings() {
scrollToElementByText("Redirect Trackers")
cookiesCheckbox().check(matches(isDisplayed()))
cookiesDropDownMenuDefault().check(matches(isDisplayed()))
trackingContentCheckbox().check(matches(isDisplayed()))
trackingcontentDropDownDefault().check(matches(isDisplayed()))
cryptominersCheckbox().check(matches(isDisplayed()))
fingerprintersCheckbox().check(matches(isDisplayed()))
redirectTrackersCheckbox().check(matches(isDisplayed()))
}
private fun cookiesCheckbox() = onView(withText("Cookies"))
private fun cookiesDropDownMenuDefault() = onView(withText("All cookies (will cause websites to break)"))
private fun trackingContentCheckbox() = onView(withText("Tracking content"))
private fun trackingcontentDropDownDefault() = onView(withText("In all tabs"))
private fun cryptominersCheckbox() = onView(withText("Cryptominers"))
private fun fingerprintersCheckbox() = onView(withText("Fingerprinters"))
private fun redirectTrackersCheckbox() = onView(withText("Redirect Trackers"))

Loading…
Cancel
Save