unsafe_browser.rb 6.43 KB
Newer Older
1
When /^I see and accept the Unsafe Browser start verification$/ do
2
  next if @skip_steps_while_restoring_background
Tails developers's avatar
Tails developers committed
3
  @screen.wait("UnsafeBrowserStartVerification.png", 30)
4
  @screen.type("l", Sikuli::KeyModifier.ALT)
5 6
end

7 8 9 10 11 12
Then /^I see the Unsafe Browser start notification and wait for it to close$/ do
  next if @skip_steps_while_restoring_background
  @screen.wait("UnsafeBrowserStartNotification.png", 30)
  @screen.waitVanish("UnsafeBrowserStartNotification.png", 10)
end

13
Then /^the Unsafe Browser has started$/ do
14
  next if @skip_steps_while_restoring_background
15
  @screen.wait("UnsafeBrowserHomepage.png", 360)
16 17
end

18 19 20 21 22 23
Then /^the Unsafe Browser has no add-ons installed$/ do
  next if @skip_steps_while_restoring_background
  step "I open the address \"about:addons\" in the Unsafe Browser"
  step "I see \"UnsafeBrowserNoAddons.png\" after at most 30 seconds"
end

24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
Then /^the Unsafe Browser has only Firefox's default bookmarks configured$/ do
  next if @skip_steps_while_restoring_background
  info = xul_application_info("Unsafe Browser")
  # "Show all bookmarks"
  @screen.type("o", Sikuli::KeyModifier.SHIFT + Sikuli::KeyModifier.CTRL)
  @screen.wait_and_click("UnsafeBrowserExportBookmarksButton.png", 20)
  @screen.wait_and_click("UnsafeBrowserExportBookmarksMenuEntry.png", 20)
  @screen.wait("UnsafeBrowserExportBookmarksSavePrompt.png", 20)
  path = "/home/#{info[:user]}/bookmarks"
  @screen.type(path + Sikuli::Key.ENTER)
  chroot_path = "#{info[:chroot]}/#{path}.json"
  try_for(10) { @vm.file_exist?(chroot_path) }
  dump = JSON.load(@vm.file_content(chroot_path))

  def check_bookmarks_helper(a)
    mozilla_uris_counter = 0
    places_uris_counter = 0
    a.each do |h|
      h.each_pair do |k, v|
        if k == "children"
          m, p = check_bookmarks_helper(v)
          mozilla_uris_counter += m
          places_uris_counter += p
        elsif k == "uri"
          uri = v
          if uri.match("^https://www\.mozilla\.org/")
            mozilla_uris_counter += 1
          elsif uri.match("^place:(sort|folder|type)=")
            places_uris_counter += 1
          else
            raise "Unexpected Unsafe Browser bookmark for '#{uri}'"
          end
        end
      end
    end
    return [mozilla_uris_counter, places_uris_counter]
  end

  mozilla_uris_counter, places_uris_counter =
    check_bookmarks_helper(dump["children"])
  assert_equal(5, mozilla_uris_counter,
               "Unexpected number (#{mozilla_uris_counter}) of mozilla " \
               "bookmarks")
  assert_equal(3, places_uris_counter,
               "Unexpected number (#{places_uris_counter}) of places " \
               "bookmarks")
  @screen.type(Sikuli::Key.F4, Sikuli::KeyModifier.ALT)
end

73
Then /^the Unsafe Browser has a red theme$/ do
74
  next if @skip_steps_while_restoring_background
75 76 77 78
  @screen.wait("UnsafeBrowserRedTheme.png", 10)
end

Then /^the Unsafe Browser shows a warning as its start page$/ do
79
  next if @skip_steps_while_restoring_background
80 81 82 83
  @screen.wait("UnsafeBrowserStartPage.png", 10)
end

When /^I start the Unsafe Browser$/ do
84
  next if @skip_steps_while_restoring_background
85
  step 'I start "UnsafeBrowser" via the GNOME "Internet" applications menu'
86 87 88 89 90
end

When /^I successfully start the Unsafe Browser$/ do
  next if @skip_steps_while_restoring_background
  step "I start the Unsafe Browser"
91
  step "I see and accept the Unsafe Browser start verification"
92
  step "I see the Unsafe Browser start notification and wait for it to close"
93
  step "the Unsafe Browser has started"
94 95 96
end

Then /^I see a warning about another instance already running$/ do
97
  next if @skip_steps_while_restoring_background
98 99 100
  @screen.wait('UnsafeBrowserWarnAlreadyRunning.png', 10)
end

Tails developers's avatar
Tails developers committed
101
When /^I close the Unsafe Browser$/ do
102
  next if @skip_steps_while_restoring_background
103
  @screen.type("q", Sikuli::KeyModifier.CTRL)
104 105
end

106 107 108 109 110 111
Then /^I see the Unsafe Browser stop notification$/ do
  next if @skip_steps_while_restoring_background
  @screen.wait('UnsafeBrowserStopNotification.png', 20)
  @screen.waitVanish('UnsafeBrowserStopNotification.png', 10)
end

112
Then /^I can start the Unsafe Browser again$/ do
113
  next if @skip_steps_while_restoring_background
114 115 116
  step "I start the Unsafe Browser"
end

117
Then /^I cannot configure the Unsafe Browser to use any local proxies$/ do
118
  next if @skip_steps_while_restoring_background
119
  @screen.wait_and_click("UnsafeBrowserWindow.png", 10)
120 121
  # First we open the proxy settings page to prepare it with the
  # correct open tabs for the loop below.
122 123
  @screen.click('UnsafeBrowserMenuButton.png')
  @screen.wait_and_click('UnsafeBrowserPreferencesButton.png', 10)
124
  @screen.wait('UnsafeBrowserPreferencesWindow.png', 10)
125 126
  @screen.wait_and_click('UnsafeBrowserAdvancedSettings.png', 10)
  @screen.wait_and_click('UnsafeBrowserNetworkTab.png', 10)
127
  sleep 0.5
128
  @screen.type(Sikuli::Key.ESC)
129 130
#  @screen.waitVanish('UnsafeBrowserPreferences.png', 10)
  sleep 0.5
131 132 133 134 135 136 137

  socks_proxy = 'c' # Alt+c for socks proxy
  no_proxy    = 'y' # Alt+y for no proxy

  proxies = [[socks_proxy, 9050],
             [socks_proxy, 9061],
             [socks_proxy, 9062],
138
             [socks_proxy, 9150],
139 140 141 142 143 144
             [no_proxy,       0]]

  proxies.each do |proxy|
    proxy_type = proxy[0]
    proxy_port = proxy[1]

145 146
    @screen.hide_cursor

147
    # Open proxy settings and select manual proxy configuration
148 149
    @screen.click('UnsafeBrowserMenuButton.png')
    @screen.wait_and_click('UnsafeBrowserPreferencesButton.png', 10)
150
    @screen.wait('UnsafeBrowserPreferencesWindow.png', 10)
151
    @screen.type("e", Sikuli::KeyModifier.ALT)
152
    @screen.wait('UnsafeBrowserProxySettings.png', 10)
153
    @screen.type("m", Sikuli::KeyModifier.ALT)
154 155

    # Configure the proxy
156 157
    @screen.type(proxy_type, Sikuli::KeyModifier.ALT)  # Select correct proxy type
    @screen.type("127.0.0.1" + Sikuli::Key.TAB + "#{proxy_port}") if proxy_type != no_proxy
158

Tails developers's avatar
Tails developers committed
159
    # Close settings
160
    @screen.type(Sikuli::Key.ENTER)
161 162
#    @screen.waitVanish('UnsafeBrowserProxySettings.png', 10)
    sleep 0.5
163
    @screen.type(Sikuli::Key.ESC)
164 165
#    @screen.waitVanish('UnsafeBrowserPreferences.png', 10)
    sleep 0.5
166 167 168 169 170 171 172 173 174 175

    # Test that the proxy settings work as they should
    step "I open the address \"https://check.torproject.org\" in the Unsafe Browser"
    if proxy_type == no_proxy
      @screen.wait('UnsafeBrowserTorCheckFail.png', 60)
    else
      @screen.wait('UnsafeBrowserProxyRefused.png', 60)
    end
  end
end
176 177 178 179 180

Then /^the Unsafe Browser complains that no DNS server is configured$/ do
  next if @skip_steps_while_restoring_background
  @screen.wait("UnsafeBrowserDNSError.png", 30)
end