Closed Bug 1456790 Opened 6 years ago Closed 6 years ago

"AttributeError: 'GeckoDriverProtocol' object has no attribute 'base'" after "Pausing until the browser exits"

Categories

(Testing :: web-platform-tests, defect)

defect
Not set
normal

Tracking

(firefox60 unaffected, firefox61 affected)

RESOLVED WORKSFORME
Tracking Status
firefox60 --- unaffected
firefox61 --- affected

People

(Reporter: whimboo, Unassigned)

References

Details

(Keywords: regression)

There are 5 failures, but maybe due to the wptrunner failures the final report says that the run was ok:

======================================================= 5 failed, 1 warnings in 13.40 seconds =======================================================
 0:19.82 TEST_END: Test OK. Subtests passed 0/5. Unexpected 0
 0:19.82 INFO Pausing until the browser exits
 0:19.82 ERROR Error running command wait with arguments ():
Traceback (most recent call last):
  File "/Volumes/data/code/gecko/testing/web-platform/tests/tools/wptrunner/wptrunner/testrunner.py", line 91, in run
    rv = commands[command](*args)
  File "/Volumes/data/code/gecko/testing/web-platform/tests/tools/wptrunner/wptrunner/testrunner.py", line 111, in wait
    self.executor.wait()
  File "/Volumes/data/code/gecko/testing/web-platform/tests/tools/wptrunner/wptrunner/executors/base.py", line 204, in wait
    self.protocol.base.wait()
AttributeError: 'GeckoDriverProtocol' object has no attribute 'base'

 0:19.83 ERROR Traceback (most recent call last):
  File "/Volumes/data/code/gecko/testing/web-platform/tests/tools/wptrunner/wptrunner/testrunner.py", line 360, in run
    new_state = self.wait_event()
  File "/Volumes/data/code/gecko/testing/web-platform/tests/tools/wptrunner/wptrunner/testrunner.py", line 435, in wait_event
    return f(*data)
  File "/Volumes/data/code/gecko/testing/web-platform/tests/tools/wptrunner/wptrunner/testrunner.py", line 637, in error
    self.restart_runner()
  File "/Volumes/data/code/gecko/testing/web-platform/tests/tools/wptrunner/wptrunner/testrunner.py", line 628, in restart_runner
    assert isinstance(self.state, RunnerManagerState.restarting)
AssertionError

 0:19.96 WARNING u'runner_teardown': ()
Exception in thread Thread-TestrunnerManager-1:
Traceback (most recent call last):
  File "/Volumes/data/Users/henrik/.pyenv/versions/2.7.14/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
  File "/Volumes/data/code/gecko/testing/web-platform/tests/tools/wptrunner/wptrunner/testrunner.py", line 360, in run
    new_state = self.wait_event()
  File "/Volumes/data/code/gecko/testing/web-platform/tests/tools/wptrunner/wptrunner/testrunner.py", line 435, in wait_event
    return f(*data)
  File "/Volumes/data/code/gecko/testing/web-platform/tests/tools/wptrunner/wptrunner/testrunner.py", line 637, in error
    self.restart_runner()
  File "/Volumes/data/code/gecko/testing/web-platform/tests/tools/wptrunner/wptrunner/testrunner.py", line 628, in restart_runner
    assert isinstance(self.state, RunnerManagerState.restarting)
AssertionError

 0:19.96 INFO Running testharness tests
 0:19.97 INFO No testharness tests to run
 0:19.97 INFO Got 0 unexpected results
 0:19.97 SUITE_END

web-platform-test
~~~~~~~~~~~~~~~~~
Ran 6 checks (1 tests, 5 subtests)
Expected results: 6
OK

James I mentioned that already a couple of days ago. But it hasn't been changed for me. So a fix you were referring to may not have fixed that?
Flags: needinfo?(james)
This is a different bug; it's trying to pause after the test is done, but that doesn't make sense for wdspec tests. I thought I fixed that, but maybe not.
Flags: needinfo?(james)
So the uncaught failures in this case are wrongly marked as fail. I filed bug 1456799 to get this fixed.
Summary: Broken final test result reporting: ok, while tests are failing → "AttributeError: 'GeckoDriverProtocol' object has no attribute 'base'" after "Pausing until the browser exits"
Looks similar to the MarionetteProtocol as fixed on bug 1454471.
See Also: → 1454471
In case of failure the following executor and protocol is in use:

> wptrunner.executors.executormarionette.GeckoDriverProtocol

As I can see the `GeckoDriverProtocol` inherits from `WebDriverProtocol` which itself inherits from `Protocol`. None of those classes seem to set `self.base` and as such you will get an error like:

> 'GeckoDriverProtocol' object has no attribute 'base'

There are no implementations defined for `WebDriverProtocol`, which might explain why we see this problem?

Given that I haven't seen this a while ago I suspect this should be somewhat a recent regression. I will have a look if I can figure that out.

James, anything you know of what has been changed in that area?
Flags: needinfo?(james)
The regression started to happen in this merge from inbound to central:
https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=e96685584bf7&tochange=6276ec7ebbf3
So the regression bug is bug 1440412.
Also flagging Geoffrey who implemented that patch.
Flags: needinfo?(geoffers+mozilla)
I didn't implement that patch? :jgraham did? I just reviewed it.
Flags: needinfo?(geoffers+mozilla)
Sorry, you are correct. James, would you mind having a look at this bug?
I thought this was fixed, and now I can't reproduce it, so I think it must be.
Status: NEW → RESOLVED
Closed: 6 years ago
Flags: needinfo?(james)
Resolution: --- → WORKSFORME
(In reply to James Graham [:jgraham] from comment #10)
> I thought this was fixed, and now I can't reproduce it, so I think it must
> be.

Ok, so fixed in terms of a github PR which then got downstreamed in one of the latest syncs into mozilla-central. It also works for me now.
You need to log in before you can comment on or make changes to this bug.