Community-TC Integration / wpt-firefox_android-nightly-wdspec-2
succeeded
Jan 15, 2024 in 1h 35m 50s
Community-TC (push)
A subset of WPT's "wdspec" tests (chunk number 2 of 2), run in the nightly release of firefox_android.
Details
View task in Taskcluster
View logs in Taskcluster
WPT Command: python3 ./wpt run --channel=nightly --log-wptreport=../artifacts/wpt_report.json --log-wptscreenshot=../artifacts/wpt_screenshot.txt --no-fail-on-unexpected --this-chunk=2 --total-chunks=2 --test-type=wdspec --log-mach-level=info --log-mach=- -y --no-pause --no-restart-on-unexpected --install-fonts --no-headless --verify-log-full --install-browser --install-webdriver --logcat-dir /home/test/artifacts/ firefox_android
kwargs = {}
tools/webdriver/webdriver/transport.py:91:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
fp = <http.client.HTTPResponse object at 0x7f44a7d70f70>
cls = <class 'json.decoder.JSONDecoder'>, object_hook = None, parse_float = None
parse_int = None, parse_constant = None, object_pairs_hook = None, kw = {}
def load(fp, *, cls=None, object_hook=None, parse_float=None,
parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):
"""Deserialize ``fp`` (a ``.read()``-supporting file-like object containing
a JSON document) to a Python object.
``object_hook`` is an optional function that will be called with the
result of any object literal decode (a ``dict``). The return value of
``object_hook`` will be used instead of the ``dict``. This feature
can be used to implement custom decoders (e.g. JSON-RPC class hinting).
``object_pairs_hook`` is an optional function that will be called with the
result of any object literal decoded with an ordered list of pairs. The
return value of ``object_pairs_hook`` will be used instead of the ``dict``.
This feature can be used to implement custom decoders. If ``object_hook``
is also defined, the ``object_pairs_hook`` takes priority.
To use a custom ``JSONDecoder`` subclass, specify it with the ``cls``
kwarg; otherwise ``JSONDecoder`` is used.
"""
> return loads(fp.read(),
cls=cls, object_hook=object_hook,
parse_float=parse_float, parse_int=parse_int,
parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
cls = <class 'json.decoder.JSONDecoder'>
fp = <http.client.HTTPResponse object at 0x7f44a7d70f70>
kw = {}
object_hook = None
object_pairs_hook = None
parse_constant = None
parse_float = None
parse_int = None
/usr/lib/python3.8/json/__init__.py:293:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
s = 'HTTP method not allowed', cls = <class 'json.decoder.JSONDecoder'>
object_hook = None, parse_float = None, parse_int = None, parse_constant = None
object_pairs_hook = None, kw = {}
def loads(s, *, cls=None, object_hook=None, parse_float=None,
parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):
"""Deserialize ``s`` (a ``str``, ``bytes`` or ``bytearray`` instance
containing a JSON document) to a Python object.
``object_hook`` is an optional function that will be called with the
result of any object literal decode (a ``dict``). The return value of
``object_hook`` will be used instead of the ``dict``. This feature
can be used to implement custom decoders (e.g. JSON-RPC class hinting).
``object_pairs_hook`` is an optional function that will be called with the
result of any object literal decoded with an ordered list of pairs. The
return value of ``object_pairs_hook`` will be used instead of the ``dict``.
This feature can be used to implement custom decoders. If ``object_hook``
is also defined, the ``object_pairs_hook`` takes priority.
``parse_float``, if specified, will be called with the string
of every JSON float to be decoded. By default this is equivalent to
float(num_str). This can be used to use another datatype or parser
for JSON floats (e.g. decimal.Decimal).
``parse_int``, if specified, will be called with the string
of every JSON int to be decoded. By default this is equivalent to
int(num_str). This can be used to use another datatype or parser
for JSON integers (e.g. float).
``parse_constant``, if specified, will be called with one of the
following strings: -Infinity, Infinity, NaN.
This can be used to raise an exception if invalid JSON numbers
are encountered.
To use a custom ``JSONDecoder`` subclass, specify it with the ``cls``
kwarg; otherwise ``JSONDecoder`` is used.
The ``encoding`` argument is ignored and deprecated since Python 3.1.
"""
if isinstance(s, str):
if s.startswith('\ufeff'):
raise JSONDecodeError("Unexpected UTF-8 BOM (decode using utf-8-sig)",
s, 0)
else:
if not isinstance(s, (bytes, bytearray)):
raise TypeError(f'the JSON object must be str, bytes or bytearray, '
f'not {s.__class__.__name__}')
s = s.decode(detect_encoding(s), 'surrogatepass')
if "encoding" in kw:
import warnings
warnings.warn(
"'encoding' is ignored and deprecated. It will be removed in Python 3.9",
DeprecationWarning,
stacklevel=2
)
del kw['encoding']
if (cls is None and object_hook is None and
parse_int is None and parse_float is None and
parse_constant is None and object_pairs_hook is None and not kw):
return _default_decoder.decode(s)
if cls is None:
cls = JSONDecoder
if object_hook is not None:
kw['object_hook'] = object_hook
if object_pairs_hook is not None:
kw['object_pairs_hook'] = object_pairs_hook
if parse_float is not None:
kw['parse_float'] = parse_float
if parse_int is not None:
kw['parse_int'] = parse_int
if parse_constant is not None:
kw['parse_constant'] = parse_constant
> return cls(**kw).decode(s)
cls = <class 'json.decoder.JSONDecoder'>
kw = {}
object_hook = None
object_pairs_hook = None
parse_constant = None
parse_float = None
parse_int = None
s = 'HTTP method not allowed'
/usr/lib/python3.8/json/__init__.py:370:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <json.decoder.JSONDecoder object at 0x7f44a7c5c6d0>
s = 'HTTP method not allowed'
_w = <built-in method match of re.Pattern object at 0x7f44c03adcf0>
def decode(self, s, _w=WHITESPACE.match):
"""Return the Python representation of ``s`` (a ``str`` instance
containing a JSON document).
"""
> obj, end = self.raw_decode(s, idx=_w(s, 0).end())
_w = <built-in method match of re.Pattern object at 0x7f44c03adcf0>
s = 'HTTP method not allowed'
self = <json.decoder.JSONDecoder object at 0x7f44a7c5c6d0>
/usr/lib/python3.8/json/decoder.py:337:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <json.decoder.JSONDecoder object at 0x7f44a7c5c6d0>
s = 'HTTP method not allowed', idx = 0
def raw_decode(self, s, idx=0):
"""Decode a JSON document from ``s`` (a ``str`` beginning with
a JSON document) and return a 2-tuple of the Python
representation and the index in ``s`` where the document ended.
This can be used to decode a JSON document from a string that may
have extraneous data at the end.
"""
try:
obj, end = self.scan_once(s, idx)
except StopIteration as err:
> raise JSONDecodeError("Expecting value", s, err.value) from None
E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
idx = 0
s = 'HTTP method not allowed'
self = <json.decoder.JSONDecoder object at 0x7f44a7c5c6d0>
/usr/lib/python3.8/json/decoder.py:355: JSONDecodeError
During handling of the above exception, another exception occurred:
session = <Session 4518a10a-9cd7-49e5-812c-77043eaefbfe>
url = <function url.<locals>.url at 0x7f44a7c67a60>, state = 'prompt'
@pytest.mark.parametrize("state", ["granted", "denied", "prompt"])
def test_set_to_state(session, url, state):
session.url = url("/common/blank.html", protocol="https")
parameters = {"descriptor": {"name": "geolocation"}, "state": state}
> response = session.transport.send(
"POST", "/session/{session_id}/permissions".format(**vars(session)),
parameters)
parameters = {'descriptor': {'name': 'geolocation'}, 'state': 'prompt'}
session = <Session 4518a10a-9cd7-49e5-812c-77043eaefbfe>
state = 'prompt'
url = <function url.<locals>.url at 0x7f44a7c67a60>
webdriver/tests/classic/permissions/set.py:97:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tools/webdriver/webdriver/transport.py:236: in send
return Response.from_http(response, decoder=decoder, **codec_kwargs)
body = {'descriptor': {'name': 'geolocation'}, 'state': 'prompt'}
codec_kwargs = {}
decoder = <class 'json.decoder.JSONDecoder'>
encoder = <class 'json.encoder.JSONEncoder'>
headers = None
method = 'POST'
payload = '{"descriptor": {"name": "geolocation"}, "state": "prompt"}'
response = <http.client.HTTPResponse object at 0x7f44a7d70f70>
self = <webdriver.transport.HTTPWireProtocol object at 0x7f44a7d5aa60>
timeout = None
uri = '/session/4518a10a-9cd7-49e5-812c-77043eaefbfe/permissions'
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cls = <class 'webdriver.transport.Response'>
http_response = <http.client.HTTPResponse object at 0x7f44a7d70f70>
decoder = <class 'json.decoder.JSONDecoder'>, kwargs = {}
@classmethod
def from_http(cls, http_response, decoder=json.JSONDecoder, **kwargs):
try:
body = json.load(http_response, cls=decoder, **kwargs)
headers = ResponseHeaders(http_response.getheaders())
except ValueError:
> raise ValueError("Failed to decode response body as JSON:\n" +
http_response.read())
E TypeError: can only concatenate str (not "bytes") to str
cls = <class 'webdriver.transport.Response'>
decoder = <class 'json.decoder.JSONDecoder'>
http_response = <http.client.HTTPResponse object at 0x7f44a7d70f70>
kwargs = {}
tools/webdriver/webdriver/transport.py:94: TypeError
50:58.48 INFO Got 49 unexpected results, with 0 unexpected passes
50:58.57 wptserve INFO Stopped http server on 127.0.0.1:9000
50:58.58 wptserve INFO Stopped http server on 127.0.0.1:8002
50:58.58 wptserve INFO Stopped http server on 127.0.0.1:8444
50:58.59 wptserve INFO Close on: (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('127.0.0.1', 8889))
50:58.59 wptserve INFO Stopped http server on 127.0.0.1:8445
50:58.59 wptserve INFO Stopped http server on 127.0.0.1:8003
50:58.59 wptserve INFO Stopped http server on 127.0.0.1:8446
50:58.59 wptserve INFO Close on: (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('127.0.0.1', 8888))
50:58.61 wptserve INFO Stopped http server on 127.0.0.1:8001
50:58.80 wptserve INFO Stopped http server on 127.0.0.1:8443
50:58.95 wptserve INFO Stopped http server on 127.0.0.1:8000
50:58.98 INFO Removed font: Ahem.ttf
50:59.00 INFO Closing logging queue
50:59.00 INFO queue closed
50:59.00 INFO Tolerating 49 unexpected results
[taskcluster 2024-01-15 03:14:22.249Z] === Task Finished ===
[taskcluster 2024-01-15 03:14:24.061Z] Successful task run with exit code: 0 completed in 3183.985 seconds
Loading