unsafe_browser.rb 5.1 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 18
end

Then /^the Unsafe Browser has a red theme$/ do
19
  next if @skip_steps_while_restoring_background
20 21 22 23
  @screen.wait("UnsafeBrowserRedTheme.png", 10)
end

Then /^the Unsafe Browser shows a warning as its start page$/ do
24
  next if @skip_steps_while_restoring_background
25 26 27 28
  @screen.wait("UnsafeBrowserStartPage.png", 10)
end

When /^I start the Unsafe Browser$/ do
29
  next if @skip_steps_while_restoring_background
30 31 32 33 34 35 36
  unsafe_browser_cmd = nil
  @vm.execute("cat /usr/share/applications/unsafe-browser.desktop").stdout.chomp.each_line { |line|
    next if ! line.start_with? "Exec="
    unsafe_browser_cmd = line[/^Exec=(.*)/,1]
  }
  assert(!unsafe_browser_cmd.nil?, "failed to extract the unsafe browser command")
  step "I run \"#{unsafe_browser_cmd}\""
37
  step "I see and accept the Unsafe Browser start verification"
38
  step "I see the Unsafe Browser start notification and wait for it to close"
39 40 41
end

Then /^I see a warning about another instance already running$/ do
42
  next if @skip_steps_while_restoring_background
43 44 45
  @screen.wait('UnsafeBrowserWarnAlreadyRunning.png', 10)
end

Tails developers's avatar
Tails developers committed
46
When /^I close the Unsafe Browser$/ do
47
  next if @skip_steps_while_restoring_background
48
  @screen.type("q", Sikuli::KeyModifier.CTRL)
49 50
end

51 52 53 54 55 56
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

57
Then /^I can start the Unsafe Browser again$/ do
58
  next if @skip_steps_while_restoring_background
59 60 61 62 63
  step "I start the Unsafe Browser"
end

When /^I open a new tab in the Unsafe Browser$/ do
  next if @skip_steps_while_restoring_background
64
  @screen.wait_and_click("UnsafeBrowserWindow.png", 10)
65
  @screen.type("t", Sikuli::KeyModifier.CTRL)
66 67 68 69 70
end

When /^I open the address "([^"]*)" in the Unsafe Browser$/ do |address|
  next if @skip_steps_while_restoring_background
  step "I open a new tab in the Unsafe Browser"
71
  @screen.type("l", Sikuli::KeyModifier.CTRL)
72
  sleep 0.5
73
  @screen.type(address + Sikuli::Key.ENTER)
74
end
75 76

Then /^I cannot configure the Unsafe Browser to use any local proxies$/ do
77
  next if @skip_steps_while_restoring_background
78
  @screen.wait_and_click("UnsafeBrowserWindow.png", 10)
Tails developers's avatar
Tails developers committed
79
  sleep 0.5
80 81
  # First we open the proxy settings page to prepare it with the
  # correct open tabs for the loop below.
82
  @screen.type("e", Sikuli::KeyModifier.ALT)
83 84
  @screen.type("n")
  @screen.wait('UnsafeBrowserPreferences.png', 10)
85 86
  @screen.wait_and_click('UnsafeBrowserAdvancedSettings.png', 10)
  @screen.wait_and_click('UnsafeBrowserNetworkTab.png', 10)
87
  sleep 0.5
88
  @screen.type(Sikuli::Key.ESC)
89 90
#  @screen.waitVanish('UnsafeBrowserPreferences.png', 10)
  sleep 0.5
91 92 93 94 95 96 97 98 99 100 101

  http_proxy  = 'x' # Alt+x is the shortcut to select http proxy
  socks_proxy = 'c' # Alt+c for socks proxy
  no_proxy    = 'y' # Alt+y for no proxy

  # Note: the loop below depends on that http_proxy is done after any
  # other proxy types since it will set "Use this proxy server for all
  # protocols", which will make the other proxy types unselectable.
  proxies = [[socks_proxy, 9050],
             [socks_proxy, 9061],
             [socks_proxy, 9062],
102
             [socks_proxy, 9151],
103 104 105 106 107 108 109 110
             [http_proxy,  8118],
             [no_proxy,       0]]

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

    # Open proxy settings and select manual proxy configuration
111
    @screen.type("e", Sikuli::KeyModifier.ALT)
112 113
    @screen.type("n")
    @screen.wait('UnsafeBrowserPreferences.png', 10)
114
    @screen.type("e", Sikuli::KeyModifier.ALT)
115
    @screen.wait('UnsafeBrowserProxySettings.png', 10)
116
    @screen.type("m", Sikuli::KeyModifier.ALT)
117 118

    # Configure the proxy
119 120
    @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
121
    # For http proxy we set "Use this proxy server for all protocols"
122
    @screen.type("s", Sikuli::KeyModifier.ALT) if proxy_type == http_proxy
123

Tails developers's avatar
Tails developers committed
124
    # Close settings
125
    @screen.type(Sikuli::Key.ENTER)
126 127
#    @screen.waitVanish('UnsafeBrowserProxySettings.png', 10)
    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 138 139 140

    # 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