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

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

Then /^the Unsafe Browser has started$/ do
13
  next if @skip_steps_while_restoring_background
Tails developers's avatar
Tails developers committed
14
  @screen.wait("UnsafeBrowserWindow.png", 360)
15 16 17
end

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

Then /^the Unsafe Browser has Wikipedia pre-selected in the search bar$/ do
23
  next if @skip_steps_while_restoring_background
24 25 26 27
  @screen.wait("UnsafeBrowserSearchBar.png", 10)
end

Then /^the Unsafe Browser shows a warning as its start page$/ do
28
  next if @skip_steps_while_restoring_background
29 30 31 32
  @screen.wait("UnsafeBrowserStartPage.png", 10)
end

When /^I start the Unsafe Browser$/ do
33
  next if @skip_steps_while_restoring_background
34 35 36 37 38 39 40
  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}\""
41 42 43 44 45
  step "I see and accept the Unsafe Browser start verification"
  step "I see and close the Unsafe Browser start notification"
end

Then /^I see a warning about another instance already running$/ do
46
  next if @skip_steps_while_restoring_background
47 48 49
  @screen.wait('UnsafeBrowserWarnAlreadyRunning.png', 10)
end

Tails developers's avatar
Tails developers committed
50
When /^I close the Unsafe Browser$/ do
51
  next if @skip_steps_while_restoring_background
52
  @screen.type("q", Sikuli::KeyModifier.CTRL)
53 54 55
end

Then /^I see the Unsafe Browser stop notification$/ do
56
  next if @skip_steps_while_restoring_background
57 58 59 60 61
  @screen.wait('UnsafeBrowserStopNotification.png', 20)
  @screen.waitVanish('UnsafeBrowserStopNotification.png', 20)
end

Then /^I can start the Unsafe Browser again$/ do
62
  next if @skip_steps_while_restoring_background
63 64 65 66 67
  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
68
  @screen.wait_and_click("UnsafeBrowserWindow.png", 10)
69
  @screen.type("t", Sikuli::KeyModifier.CTRL)
70 71 72 73 74
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"
75
  @screen.type("l", Sikuli::KeyModifier.CTRL)
76
  sleep 0.5
77
  @screen.type(address + Sikuli::Key.ENTER)
78
end
79 80

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

  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],
106
             [socks_proxy, 9151],
107 108 109 110 111 112 113 114
             [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
115
    @screen.type("e", Sikuli::KeyModifier.ALT)
116 117
    @screen.type("n")
    @screen.wait('UnsafeBrowserPreferences.png', 10)
118
    @screen.type("e", Sikuli::KeyModifier.ALT)
119
    @screen.wait('UnsafeBrowserProxySettings.png', 10)
120
    @screen.type("m", Sikuli::KeyModifier.ALT)
121 122

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

Tails developers's avatar
Tails developers committed
128
    # Close settings
129
    @screen.type(Sikuli::Key.ENTER)
130 131
#    @screen.waitVanish('UnsafeBrowserProxySettings.png', 10)
    sleep 0.5
132
    @screen.type(Sikuli::Key.ESC)
133 134
#    @screen.waitVanish('UnsafeBrowserPreferences.png', 10)
    sleep 0.5
135 136 137 138 139 140 141 142 143 144

    # 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