Page MenuHomePhabricator

Mediawiki::Client#login receiving 403 Forbidden responses from the API in build tests
Closed, ResolvedPublic

Description

Broken jobs:

All tests that log the user are failing. Mediawiki::Client#login appears to be receiving 403 Forbidden responses from the Beta Cluster's api.php endpoint.

Reproduced on my machine targeting beta cluster:

MobileFrontend

$ BROWSER=chrome MEDIAWIKI_ENVIRONMENT=beta MEDIAWIKI_PASSWORD=not-the-real-one bundle exec cucumber tests/browser/features/diff.feature:5
@chrome @en.m.wikipedia.beta.wmflabs.org @firefox @test2.m.wikipedia.org @vagrant
Feature: Page diff

  @smoke @editing @integration
  Scenario: Added and removed content                            # tests/browser/features/diff.feature:5
    Given I am logged into the mobile website                    # tests/browser/features/step_definitions/common_steps.rb:28
      unexpected HTTP response (403) (MediawikiApi::HttpError)
      tests/browser/features/diff.feature:6:in `Given I am logged into the mobile website'
    And the page "Selenium diff test 3" has the following edits: # tests/browser/features/step_definitions/editor_steps.rb:1
      | text    |
      | ABC DEF |
      | ABC GHI |
    When I am on the "Selenium diff test 3" page                 # tests/browser/features/step_definitions/common_steps.rb:48
    And I click on the history link in the last modified bar     # tests/browser/features/step_definitions/common_article_steps.rb:20
    And I open the latest diff                                   # tests/browser/features/step_definitions/special_history_steps.rb:5
    Then I should see "GHI" as added content                     # tests/browser/features/step_definitions/diff_steps.rb:1
    And I should see "DEF" as removed content                    # tests/browser/features/step_definitions/diff_steps.rb:5

Failing Scenarios:
cucumber tests/browser/features/diff.feature:5 # Scenario: Added and removed content

1 scenario (1 failed)
7 steps (1 failed, 6 skipped)
0m17.964s

QuickSurveys

$ BROWSER=chrome MEDIAWIKI_ENVIRONMENT=beta MEDIAWIKI_PASSWORD=not-the-real-one bundle exec cucumber tests/browser/features/external_survey.feature:7
@chrome @en.m.wikipedia.beta.wmflabs.org @firefox @test2.m.wikipedia.org @vagrant @integration
Feature: External surveys

  Background:                                             # tests/browser/features/external_survey.feature:3
    Given the quick survey test pages are installed       # tests/browser/features/support/step_definitions/common_steps.rb:1
      unexpected HTTP response (403) (MediawikiApi::HttpError)
      tests/browser/features/external_survey.feature:4:in `Given the quick survey test pages are installed'
    And I have dismissed survey "internal-example-survey" # tests/browser/features/support/step_definitions/common_steps.rb:100

  Scenario: External survey is visible with flag                                                   # tests/browser/features/external_survey.feature:7
    And I am on the "Quick survey test page stub" page with the external quick survey flag enabled # tests/browser/features/support/step_definitions/common_steps.rb:54
    And the page has fully loaded                                                                  # tests/browser/features/support/step_definitions/common_steps.rb:72
    And the survey code has fully loaded                                                           # tests/browser/features/support/step_definitions/common_steps.rb:83
    Then I should see the survey                                                                   # tests/browser/features/support/step_definitions/common_steps.rb:68

Failing Scenarios:
cucumber tests/browser/features/external_survey.feature:7 # Scenario: External survey is visible with flag

1 scenario (1 failed)
6 steps (1 failed, 5 skipped)
0m0.553s

RelatedArticles

$ BROWSER=chrome MEDIAWIKI_ENVIRONMENT=beta-desktop MEDIAWIKI_PASSWORD=not-the-real-one bundle exec cucumber tests/browser/features/read_more.feature:29
@chrome @integration @staging
Feature: ReadMore

  Background:                                      # tests/browser/features/read_more.feature:3
  unexpected HTTP response (403) (MediawikiApi::HttpError)
  /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_api-0.7.0/lib/mediawiki_api/client.rb:208:in `send_request'
  /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_api-0.7.0/lib/mediawiki_api/client.rb:232:in `raw_action'
  /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_api-0.7.0/lib/mediawiki_api/client.rb:36:in `action'
  /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_api-0.7.0/lib/mediawiki_api/client.rb:128:in `log_in'
  /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_selenium-1.7.2/lib/mediawiki_selenium/helpers/api_helper.rb:18:in `block in api'
  /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_selenium-1.7.2/lib/mediawiki_selenium/helpers/api_helper.rb:17:in `tap'
  /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_selenium-1.7.2/lib/mediawiki_selenium/helpers/api_helper.rb:17:in `api'
  /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_selenium-1.7.2/lib/mediawiki_selenium/helpers/api_helper.rb:39:in `Before'
    Given RelatedArticles test pages are installed # tests/browser/features/support/step_definitions/common_steps.rb:1
      unexpected HTTP response (403) (MediawikiApi::HttpError)
      tests/browser/features/read_more.feature:4:in `Given RelatedArticles test pages are installed'

  @en.wikipedia.beta.wmflabs.org @extension-betafeatures
  Scenario: ReadMore is present when enabled as a BetaFeature # tests/browser/features/read_more.feature:29
    Given I am logged in                                      # mediawiki_selenium-1.7.2/lib/mediawiki_selenium/step_definitions/login_steps.rb:1
    And ReadMore is enabled as a beta feature                 # tests/browser/features/support/step_definitions/common_steps.rb:65
    And I am on the "Related Articles 1" page                 # tests/browser/features/support/step_definitions/common_steps.rb:39
    And page has fully loaded with ReadMore code              # tests/browser/features/support/step_definitions/common_steps.rb:43
    Then I must see ReadMore                                  # tests/browser/features/support/step_definitions/common_steps.rb:69

Failing Scenarios:
cucumber tests/browser/features/read_more.feature:29 # Scenario: ReadMore is present when enabled as a BetaFeature

1 scenario (1 failed)
6 steps (1 failed, 5 skipped)
0m2.059s

Event Timeline

@phuedx and I have been unable to reproduce this locally. Has there been an authentication change lately that could be causing this?
/cc @zeljkofilipin @hashar @Tgr

The auth system does not use HTTP response codes, this is a lower-level failure.

I vaguely remember seeing a similar error while testing something this week. I will investigate today.

zeljkofilipin updated the task description. (Show Details)
zeljkofilipin edited projects, added QuickSurveys; removed MediaViewer.
zeljkofilipin updated the task description. (Show Details)

Not reproducible on local mediawiki-vagrant machine:

MobileFrontend

$ BROWSER=chrome bundle exec cucumber tests/browser/features/diff.feature:5
@chrome @en.m.wikipedia.beta.wmflabs.org @firefox @test2.m.wikipedia.org @vagrant
Feature: Page diff

  @smoke @editing @integration
  Scenario: Added and removed content                            # tests/browser/features/diff.feature:5
    Given I am logged into the mobile website                    # tests/browser/features/step_definitions/common_steps.rb:28
    And the page "Selenium diff test 3" has the following edits: # tests/browser/features/step_definitions/editor_steps.rb:1
      | text    |
      | ABC DEF |
      | ABC GHI |
    When I am on the "Selenium diff test 3" page                 # tests/browser/features/step_definitions/common_steps.rb:48
    And I click on the history link in the last modified bar     # tests/browser/features/step_definitions/common_article_steps.rb:20
    And I open the latest diff                                   # tests/browser/features/step_definitions/special_history_steps.rb:5
    Then I should see "GHI" as added content                     # tests/browser/features/step_definitions/diff_steps.rb:1
    And I should see "DEF" as removed content                    # tests/browser/features/step_definitions/diff_steps.rb:5

1 scenario (1 passed)
7 steps (7 passed)
1m7.643s

Also reproducible targeting production:

$ BROWSER=chrome MEDIAWIKI_ENVIRONMENT=test2 MEDIAWIKI_PASSWORD=not-the-real-one bundle exec cucumber tests/browser/features/diff.feature:5
@chrome @en.m.wikipedia.beta.wmflabs.org @firefox @test2.m.wikipedia.org @vagrant
Feature: Page diff

  @smoke @editing @integration
  Scenario: Added and removed content                            # tests/browser/features/diff.feature:5
    Given I am logged into the mobile website                    # tests/browser/features/step_definitions/common_steps.rb:28
      unexpected HTTP response (403) (MediawikiApi::HttpError)
      tests/browser/features/diff.feature:6:in `Given I am logged into the mobile website'
    And the page "Selenium diff test 3" has the following edits: # tests/browser/features/step_definitions/editor_steps.rb:1
      | text    |
      | ABC DEF |
      | ABC GHI |
    When I am on the "Selenium diff test 3" page                 # tests/browser/features/step_definitions/common_steps.rb:48
    And I click on the history link in the last modified bar     # tests/browser/features/step_definitions/common_article_steps.rb:20
    And I open the latest diff                                   # tests/browser/features/step_definitions/special_history_steps.rb:5
    Then I should see "GHI" as added content                     # tests/browser/features/step_definitions/diff_steps.rb:1
    And I should see "DEF" as removed content                    # tests/browser/features/step_definitions/diff_steps.rb:5

Failing Scenarios:
cucumber tests/browser/features/diff.feature:5 # Scenario: Added and removed content

1 scenario (1 failed)
7 steps (1 failed, 6 skipped)
0m10.670s

Not reproducible in integration:

https://gerrit.wikimedia.org/r/#/c/309594/
https://integration.wikimedia.org/ci/job/mwext-mw-selenium/10076/consoleFull

...
00:00:44.733 + vendor/bin/bundle exec cucumber --color --tags @integration --tags '~@skip' --format pretty --format junit --out /mnt/jenkins-workspace/workspace/mwext-mw-selenium/log/junit
00:00:47.054 @chrome @en.m.wikipedia.beta.wmflabs.org @firefox @test2.m.wikipedia.org @vagrant
00:00:47.054 Feature: Page diff
00:00:47.054 
00:00:47.054   @smoke @editing @integration
00:00:47.055   Scenario: Added and removed content                            # features/diff.feature:5
00:01:05.541     Given I am logged into the mobile website                    # features/step_definitions/common_steps.rb:28
00:01:05.541     And the page "Selenium diff test 3" has the following edits: # features/step_definitions/editor_steps.rb:8
00:01:05.542       | text    |
00:01:05.542       | ABC DEF |
00:01:10.182       | ABC GHI |
00:01:10.182     When I am on the "Selenium diff test 3" page                 # features/step_definitions/common_steps.rb:48
00:01:10.182     And I click on the history link in the last modified bar     # features/step_definitions/common_article_steps.rb:20
00:01:10.182     And I open the latest diff                                   # features/step_definitions/special_history_steps.rb:5
00:01:10.183     Then I should see "GHI" as added content                     # features/step_definitions/diff_steps.rb:1
00:01:10.183     And I should see "DEF" as removed content                    # features/step_definitions/diff_steps.rb:
...

API seems to work fine on beta cluster.

$ irb

irb(main):001:0> require "mediawiki_api"
=> true

irb(main):002:0> client = MediawikiApi::Client.new "https://en.wikipedia.beta.wmflabs.org/w/api.php"
=> #<MediawikiApi::Client:0x007f9704946248 @cookies=#<HTTP::CookieJar:0x007f9704946220 @store=#<HTTP::CookieJar::HashStore:0x007f9703b1f7c8 @mon_owner=nil, @mon_count=0, @mon_mutex=#<Thread::Mutex:0x007f9703b1f700>, @logger=nil, @gc_threshold=150, @jar={}, @gc_index=0>>, @conn=#<Faraday::Connection:0x007f9703b1f480 @parallel_manager=nil, @headers={"User-Agent"=>"Faraday v0.9.2"}, @params={}, @options=#<Faraday::RequestOptions (empty)>, @ssl=#<Faraday::SSLOptions (empty)>, @default_parallel_manager=nil, @builder=#<Faraday::RackBuilder:0x007f9703b1f0c0 @handlers=[Faraday::Request::Multipart, Faraday::Request::UrlEncoded, Faraday::CookieJar, FaradayMiddleware::FollowRedirects, Faraday::Adapter::NetHttp]>, @url_prefix=#<URI::HTTPS https://en.wikipedia.beta.wmflabs.org/w/api.php>, @proxy=nil>, @logged_in=false, @tokens={}>

irb(main):003:0> client.log_in "Selenium_user", "not-the-real-one"
=> {"result"=>"Success", "lguserid"=>..., "lgusername"=>"Selenium user", "lgtoken"=>"...", "cookieprefix"=>"enwiki", "sessionid"=>"..."}

Verbose stack trace:

MobileFrontend

$ BROWSER=chrome MEDIAWIKI_ENVIRONMENT=beta MEDIAWIKI_PASSWORD=not-the-real-one bundle exec cucumber --backtrace --verbose tests/browser/features/diff.feature:5
Code:
  * tests/browser/features/support/env.rb
Failed to load 'jpg' programming language for file tests/browser/features/support/exif.jpg: cannot load such file -- cucumber/jpg_support/jpg_language
  * tests/browser/features/support/exif.jpg [NOT SUPPORTED]
  * tests/browser/features/support/hooks.rb
  * tests/browser/features/support/pages/article_page.rb
  * tests/browser/features/support/pages/create_article_page.rb
  * tests/browser/features/support/pages/diff_page.rb
  * tests/browser/features/support/pages/language_page.rb
  * tests/browser/features/support/pages/main_page.rb
  * tests/browser/features/support/pages/notification_page.rb
  * tests/browser/features/support/pages/page.rb
  * tests/browser/features/support/pages/special_history_page.rb
  * tests/browser/features/support/pages/special_mobilediff_page.rb
  * tests/browser/features/support/pages/special_search_page.rb
  * tests/browser/features/support/pages/special_uploads_page.rb
  * tests/browser/features/support/pages/special_userlogin_page.rb
  * tests/browser/features/support/pages/user_page.rb
  * tests/browser/features/support/pages/watchlist_page.rb
Failed to load 'sqlite' programming language for file tests/browser/features/support/permissions.sqlite: cannot load such file -- cucumber/sqlite_support/sqlite_language
  * tests/browser/features/support/permissions.sqlite [NOT SUPPORTED]
  * tests/browser/features/step_definitions/common_article_steps.rb
  * tests/browser/features/step_definitions/common_steps.rb
  * tests/browser/features/step_definitions/create_page_api_steps.rb
  * tests/browser/features/step_definitions/diff_steps.rb
  * tests/browser/features/step_definitions/editor_steps.rb
  * tests/browser/features/step_definitions/editor_ve_steps.rb
  * tests/browser/features/step_definitions/issues_steps.rb
  * tests/browser/features/step_definitions/language_icon_steps.rb
  * tests/browser/features/step_definitions/language_steps.rb
  * tests/browser/features/step_definitions/mainmenu_steps.rb
  * tests/browser/features/step_definitions/messages_steps.rb
  * tests/browser/features/step_definitions/nearby_steps.rb
  * tests/browser/features/step_definitions/notification_steps.rb
  * tests/browser/features/step_definitions/pageactions_steps.rb
  * tests/browser/features/step_definitions/references_steps.rb
  * tests/browser/features/step_definitions/search_steps.rb
  * tests/browser/features/step_definitions/special_contributions_steps.rb
  * tests/browser/features/step_definitions/special_history_steps.rb
  * tests/browser/features/step_definitions/special_watchlist_steps.rb
  * tests/browser/features/step_definitions/switch_views.rb
  * tests/browser/features/step_definitions/switch_views_bug_t129600.rb
  * tests/browser/features/step_definitions/talk_steps.rb
  * tests/browser/features/step_definitions/toc_steps.rb
  * tests/browser/features/step_definitions/toggling_steps.rb
  * tests/browser/features/step_definitions/ui_links_steps.rb
  * tests/browser/features/step_definitions/user_page_steps.rb
  * tests/browser/features/step_definitions/watchstar_steps.rb
  * tests/browser/features/step_definitions/wikidata_descriptions.rb

Features:
  * tests/browser/features/diff.feature:5
Parsing feature files took 0m0.005s

@chrome @en.m.wikipedia.beta.wmflabs.org @firefox @test2.m.wikipedia.org @vagrant
Feature: Page diff

  @smoke @editing @integration
  Scenario: Added and removed content                            # tests/browser/features/diff.feature:5
    Given I am logged into the mobile website                    # tests/browser/features/step_definitions/common_steps.rb:28
      unexpected HTTP response (403) (MediawikiApi::HttpError)
      /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_api-0.7.0/lib/mediawiki_api/client.rb:208:in `send_request'
      /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_api-0.7.0/lib/mediawiki_api/client.rb:232:in `raw_action'
      /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_api-0.7.0/lib/mediawiki_api/client.rb:36:in `action'
      /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_api-0.7.0/lib/mediawiki_api/client.rb:128:in `log_in'
      /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_selenium-1.7.2/lib/mediawiki_selenium/helpers/api_helper.rb:18:in `block in api'
      /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_selenium-1.7.2/lib/mediawiki_selenium/helpers/api_helper.rb:17:in `tap'
      /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_selenium-1.7.2/lib/mediawiki_selenium/helpers/api_helper.rb:17:in `api'
      /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_selenium-1.7.2/lib/mediawiki_selenium/helpers/login_helper.rb:20:in `block in log_in'
      /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_selenium-1.7.2/lib/mediawiki_selenium/environment.rb:494:in `block in visit_wiki'
      /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_selenium-1.7.2/lib/mediawiki_selenium/environment.rb:603:in `with'
      /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_selenium-1.7.2/lib/mediawiki_selenium/helpers/api_helper.rb:70:in `block in on_wiki'
      /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_selenium-1.7.2/lib/mediawiki_selenium/environment.rb:603:in `with'
      /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_selenium-1.7.2/lib/mediawiki_selenium/environment.rb:554:in `block in with_alternative'
      /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_selenium-1.7.2/lib/mediawiki_selenium/environment.rb:592:in `record_alternatives'
      /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_selenium-1.7.2/lib/mediawiki_selenium/environment.rb:554:in `with_alternative'
      /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_selenium-1.7.2/lib/mediawiki_selenium/environment.rb:377:in `on_wiki'
      /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_selenium-1.7.2/lib/mediawiki_selenium/helpers/api_helper.rb:68:in `on_wiki'
      /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_selenium-1.7.2/lib/mediawiki_selenium/environment.rb:492:in `visit_wiki'
      /usr/local/lib/ruby/gems/2.3.0/gems/mediawiki_selenium-1.7.2/lib/mediawiki_selenium/helpers/login_helper.rb:14:in `log_in'
      /Users/z/Documents/gerrit/mediawiki/vagrant/mediawiki/extensions/MobileFrontend/tests/browser/features/step_definitions/common_steps.rb:30:in `block in <top (required)>'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/core_ext/instance_exec.rb:48:in `instance_exec'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/core_ext/instance_exec.rb:48:in `block in cucumber_instance_exec'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/core_ext/instance_exec.rb:69:in `cucumber_run_with_backtrace_filtering'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/core_ext/instance_exec.rb:36:in `cucumber_instance_exec'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/rb_support/rb_step_definition.rb:97:in `invoke'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/step_match.rb:25:in `invoke'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/step_invocation.rb:60:in `invoke'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/step_invocation.rb:38:in `accept'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/tree_walker.rb:106:in `block in visit_step'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/tree_walker.rb:170:in `broadcast'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/tree_walker.rb:105:in `visit_step'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/step_collection.rb:19:in `block in accept'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/step_collection.rb:18:in `each'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/step_collection.rb:18:in `accept'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/tree_walker.rb:100:in `block in visit_steps'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/tree_walker.rb:170:in `broadcast'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/tree_walker.rb:99:in `visit_steps'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/tree_walker.rb:15:in `block in execute'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/runtime.rb:83:in `block (2 levels) in with_hooks'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/runtime.rb:99:in `before_and_after'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/runtime.rb:82:in `block in with_hooks'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/runtime/support_code.rb:120:in `block (3 levels) in around'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/language_support/language_methods.rb:9:in `block in around'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/language_support/language_methods.rb:97:in `execute_around'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/language_support/language_methods.rb:8:in `around'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/runtime/support_code.rb:119:in `block (2 levels) in around'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/runtime/support_code.rb:123:in `around'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/runtime.rb:94:in `around'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/runtime.rb:81:in `with_hooks'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/tree_walker.rb:13:in `execute'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/scenario.rb:32:in `block in accept'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/scenario.rb:79:in `with_visitor'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/scenario.rb:31:in `accept'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/tree_walker.rb:58:in `block in visit_feature_element'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/tree_walker.rb:170:in `broadcast'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/tree_walker.rb:57:in `visit_feature_element'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/feature.rb:38:in `block in accept'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/feature.rb:37:in `each'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/feature.rb:37:in `accept'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/tree_walker.rb:27:in `block in visit_feature'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/tree_walker.rb:170:in `broadcast'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/tree_walker.rb:26:in `visit_feature'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/features.rb:28:in `block in accept'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/features.rb:17:in `each'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/features.rb:17:in `each'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/features.rb:27:in `accept'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/tree_walker.rb:21:in `block in visit_features'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/tree_walker.rb:170:in `broadcast'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/ast/tree_walker.rb:20:in `visit_features'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/runtime.rb:49:in `run!'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/lib/cucumber/cli/main.rb:47:in `execute!'
      /usr/local/lib/ruby/gems/2.3.0/gems/cucumber-1.3.20/bin/cucumber:13:in `<top (required)>'
      /usr/local/bin/cucumber:23:in `load'
      /usr/local/bin/cucumber:23:in `<main>'
      tests/browser/features/diff.feature:6:in `Given I am logged into the mobile website'
    And the page "Selenium diff test 3" has the following edits: # tests/browser/features/step_definitions/editor_steps.rb:1
      | text    |
      | ABC DEF |
      | ABC GHI |
    When I am on the "Selenium diff test 3" page                 # tests/browser/features/step_definitions/common_steps.rb:48
    And I click on the history link in the last modified bar     # tests/browser/features/step_definitions/common_article_steps.rb:20
    And I open the latest diff                                   # tests/browser/features/step_definitions/special_history_steps.rb:5
    Then I should see "GHI" as added content                     # tests/browser/features/step_definitions/diff_steps.rb:1
    And I should see "DEF" as removed content                    # tests/browser/features/step_definitions/diff_steps.rb:5

Failing Scenarios:
cucumber tests/browser/features/diff.feature:5 # Scenario: Added and removed content

1 scenario (1 failed)
7 steps (1 failed, 6 skipped)
0m5.347s

Change 311134 had a related patch set uploaded (by Zfilipin):
Fix MediawikiApi::HttpError in Selenium tests

https://gerrit.wikimedia.org/r/311134

Change 311137 had a related patch set uploaded (by Zfilipin):
Fix MediawikiApi::HttpError in Selenium tests

https://gerrit.wikimedia.org/r/311137

Change 311137 merged by jenkins-bot:
Fix MediawikiApi::HttpError in Selenium tests

https://gerrit.wikimedia.org/r/311137

Change 311134 merged by jenkins-bot:
Fix MediawikiApi::HttpError in Selenium tests

https://gerrit.wikimedia.org/r/311134

Change 311140 had a related patch set uploaded (by Zfilipin):
Fix MediawikiApi::HttpError in Selenium tests

https://gerrit.wikimedia.org/r/311140

Change 311140 merged by jenkins-bot:
Fix MediawikiApi::HttpError in Selenium tests

https://gerrit.wikimedia.org/r/311140

Thanks for raising @jhobs and thanks @zeljkofilipin for working out what was happening.

I re-ran the following builds and they are now passing:

The selenium-MobileFrontend build is still failing occasionally due to T144912