[tbb-commits] [tor-browser-bundle-testsuite/master] Bug 30431: Fix the https-everywhere test
gk at torproject.org
gk at torproject.org
Thu Oct 15 18:41:27 UTC 2020
commit 3f07e512d087e40845ce4d52ec4221f98baed878
Author: Alex Catarineu <acat at torproject.org>
Date: Mon Sep 14 18:26:12 2020 +0200
Bug 30431: Fix the https-everywhere test
Temptatively fixing this flaky test by waiting until HTTPS Everywhere
has loaded some rulesets.
Also fix https-everywhere tests for builtin addon.
---
TBBTestSuite/TestSuite/BrowserBundleTests.pm | 15 --------
.../tor_browser_tests/test_https-everywhere.py | 44 ++++++++++++++++++----
2 files changed, 37 insertions(+), 22 deletions(-)
diff --git a/TBBTestSuite/TestSuite/BrowserBundleTests.pm b/TBBTestSuite/TestSuite/BrowserBundleTests.pm
index e92fe6d..e35e903 100644
--- a/TBBTestSuite/TestSuite/BrowserBundleTests.pm
+++ b/TBBTestSuite/TestSuite/BrowserBundleTests.pm
@@ -272,27 +272,12 @@ our @tests = (
type => 'marionette',
descr => 'Check that https everywhere is not doing anything when disabled',
use_net => 1,
- pre => sub {
- my ($tbbinfos, $t) = @_;
- my $hdir = "$tbbinfos->{tmpdir}/https-everywhere";
- mkdir "$hdir";
- move($tbbinfos->{ffprofiledir} . '/extensions/https-everywhere-eff at eff.org.xpi',
- $hdir . '/https-everywhere-eff at eff.org.xpi');
- },
- post => sub {
- my ($tbbinfos, $t) = @_;
- my $hdir = "$tbbinfos->{tmpdir}/https-everywhere";
- move($hdir . '/https-everywhere-eff at eff.org.xpi',
- $tbbinfos->{ffprofiledir} . '/extensions/https-everywhere-eff at eff.org.xpi');
- },
},
{
name => 'https-everywhere',
type => 'marionette',
use_net => 1,
descr => 'Check that https everywhere is working',
- # Bug 30431: temporarily disable test
- enable => sub { undef },
},
{
name => 'settings',
diff --git a/marionette/tor_browser_tests/test_https-everywhere.py b/marionette/tor_browser_tests/test_https-everywhere.py
index 25d959e..7819771 100644
--- a/marionette/tor_browser_tests/test_https-everywhere.py
+++ b/marionette/tor_browser_tests/test_https-everywhere.py
@@ -1,11 +1,7 @@
-from marionette_driver import By
-from marionette_driver.errors import MarionetteException
-
from marionette_harness import MarionetteTestCase
-
+from marionette_driver import Wait
import testsuite
-
class Test(MarionetteTestCase):
def setUp(self):
@@ -17,13 +13,47 @@ class Test(MarionetteTestCase):
self.HTTP_URL = "http://httpbin.org/"
self.HTTPS_URL = "https://httpbin.org/"
+ self.is_disabled = self.ts.t['test']['name'] == 'https-everywhere-disabled'
+
+ if self.is_disabled:
+ with self.marionette.using_context('chrome'):
+ self.marionette.execute_async_script("""
+ let [resolve] = arguments;
+ const { AddonManager } = ChromeUtils.import(
+ "resource://gre/modules/AddonManager.jsm"
+ );
+ AddonManager.getAddonByID("https-everywhere-eff at eff.org")
+ .then(addon => addon.disable())
+ .then(resolve);
+ """)
+
+ def tearDown(self):
+ super(Test, self).tearDown()
+ if self.is_disabled:
+ with self.marionette.using_context('chrome'):
+ self.marionette.execute_async_script("""
+ let [resolve] = arguments;
+ const { AddonManager } = ChromeUtils.import(
+ "resource://gre/modules/AddonManager.jsm"
+ );
+ AddonManager.getAddonByID("https-everywhere-eff at eff.org")
+ .then(addon => addon.enable())
+ .then(resolve);
+ """)
def test_https_everywhere(self):
+ # Wait until .tor.onion rules have been loaded, to make sure HTTPS Everywhere
+ # has loaded correctly.
+ m = self.marionette
+ if not self.is_disabled:
+ with m.using_context('chrome'):
+ Wait(m, timeout=m.timeout.page_load).until(
+ lambda _: m.execute_script("return OnionAliasStore._onionMap.size;") > 0)
+
with self.marionette.using_context('content'):
self.marionette.navigate(self.HTTP_URL)
- if self.ts.t['test']['name'] == 'https-everywhere':
+ if not self.is_disabled:
self.assertEqual(self.marionette.get_url(), self.HTTPS_URL)
else:
self.assertEqual(self.marionette.get_url(), self.HTTP_URL)
-
More information about the tbb-commits
mailing list