unsafe_browser.rb 5.09 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 5 6 7
  @screen.type("l", Sikuli::KEY_ALT)
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 53 54 55
  @screen.type("q", Sikuli::KEY_CTRL)
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 70 71 72 73 74 75
  @screen.type("t", Sikuli::KEY_CTRL)
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"
  @screen.type("l", Sikuli::KEY_CTRL)
76
  sleep 0.5
77 78
  @screen.type(address + Sikuli::KEY_RETURN)
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 86 87 88
  # First we open the proxy settings page to prepare it with the
  # correct open tabs for the loop below.
  @screen.type("e", Sikuli::KEY_ALT)
  @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 92
  sleep 0.5
  @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 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123

  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],
             [socks_proxy, 9063],
             [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
    @screen.type("e", Sikuli::KEY_ALT)
    @screen.type("n")
    @screen.wait('UnsafeBrowserPreferences.png', 10)
    @screen.type("e", Sikuli::KEY_ALT)
    @screen.wait('UnsafeBrowserProxySettings.png', 10)
    @screen.type("m", Sikuli::KEY_ALT)

    # Configure the proxy
    @screen.type(proxy_type, Sikuli::KEY_ALT)  # Select correct proxy type
Tails developers's avatar
Tails developers committed
124
    @screen.type("127.0.0.1\t#{proxy_port}") if proxy_type != no_proxy
125 126 127
    # For http proxy we set "Use this proxy server for all protocols"
    @screen.type("s", Sikuli::KEY_ALT) if proxy_type == http_proxy

Tails developers's avatar
Tails developers committed
128
    # Close settings
129
    @screen.type(Sikuli::KEY_RETURN)
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