Bug 255169 - AX: computedrole through webdriver crashes for <area> and <optgroup> elements
Summary: AX: computedrole through webdriver crashes for <area> and <optgroup> elements
Status: RESOLVED MOVED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebDriver (show other bugs)
Version: WebKit Nightly Build
Hardware: All All
: P2 Normal
Assignee: Nobody
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2023-04-07 14:35 PDT by James Craig
Modified: 2023-04-19 23:36 PDT (History)
3 users (show)

See Also:


Attachments
wpt test case (1.34 KB, text/html)
2023-04-07 14:35 PDT, James Craig
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description James Craig 2023-04-07 14:35:45 PDT
Created attachment 465813 [details]
wpt test case

AX: computedrole through webdriver crashes for <area> and <optgroup> elements

Not yet sure if this is a bug in webdriver or in webcore/accessibility. 

Attached test case crashes in a WPT environment, and the elements are rendered in any context.
Comment 1 James Craig 2023-04-07 14:35:55 PDT
% python3 ./wpt run --log-mach-level debug --log-mach - --webdriver-arg="--diagnose" safari /html-aam/webkit-computedrole-crashes.html
 0:00.02 INFO Set tests_root to /path-redacted/wpt
 0:00.02 INFO Set metadata_root to /path-redacted/wpt
 0:00.02 INFO Set manifest_update to True
 0:00.02 INFO Set manifest_download to True
 0:00.03 INFO Interpreting channel 'nightly' as 'preview'
 0:00.39 vcs DEBUG git rev-parse --show-toplevel
 0:00.41 vcs DEBUG git rev-parse --show-cdup
 0:00.42 vcs DEBUG git rev-parse HEAD
 0:05.98 INFO Using 1 client processes
 0:07.17 wptserve INFO Starting http server on http://web-platform.test:8000
 0:07.59 wptserve INFO Starting http server on http://web-platform.test:8001
 0:08.02 wptserve INFO Starting http server on http://web-platform.test:8002
 0:08.45 wptserve INFO Starting http server on http://web-platform.test:8003
 0:08.88 wptserve INFO Starting https server on https://web-platform.test:8443
 0:09.31 wptserve INFO Starting https server on https://web-platform.test:8444
 0:09.75 wptserve INFO Starting https server on https://web-platform.test:8445
 0:10.19 wptserve INFO Starting https server on https://web-platform.test:8446
 0:10.75 wptserve INFO Create socket on: (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('127.0.0.1', 8888))
 0:10.75 wptserve INFO Bind on: (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('127.0.0.1', 8888))
 0:10.75 wptserve INFO Listen on: (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('127.0.0.1', 8888))
 0:11.05 wptserve INFO Create socket on: (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('127.0.0.1', 8889))
 0:11.05 wptserve INFO Bind on: (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('127.0.0.1', 8889))
 0:11.06 wptserve INFO Listen on: (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('127.0.0.1', 8889))
 0:11.49 wptserve INFO Starting http2 server on https://web-platform.test:9000
 0:11.97 SUITE_START: web-platform-test - running 1 tests
 0:11.98 DEBUG using acceptInsecureCerts=True
 0:11.98 DEBUG using acceptInsecureCerts=True
 0:11.98 DEBUG using acceptInsecureCerts=True
 0:11.98 DEBUG using acceptInsecureCerts=True
 0:11.98 WARNING Unsupported test type print-reftest for product safari
 0:11.98 DEBUG Using 1 processes
 0:11.98 DEBUG Dispatch start_init
 0:11.98 DEBUG new state: initializing
 0:11.98 DEBUG Dispatch init
 0:11.98 DEBUG WebDriver executable path: /Applications/Safari Technology Preview.app/Contents/MacOS/safaridriver
 0:11.98 DEBUG Safari executable path: /Applications/Safari Technology Preview.app/Contents/MacOS/../../Contents/MacOS/Safari Technology Preview
 0:11.98 DEBUG Init called, starting browser and runner
 0:11.98 DEBUG Starting browser with settings {'pac': None}
 0:11.98 DEBUG Starting WebDriver: /Applications/Safari Technology Preview.app/Contents/MacOS/safaridriver --port=59566 --diagnose
 0:11.99 DEBUG OutputHandler.after_process_start
 0:11.99 DEBUG Trying to connect to 127.0.0.1:59566
 0:12.50 DEBUG Connected to 127.0.0.1:59566
 0:12.50 DEBUG OutputHandler.start
 0:12.50 DEBUG _run complete
 0:12.50 INFO Starting runner
 0:12.50 DEBUG Test runner started
 0:13.12 DEBUG Got command: 'log'
 0:13.12 DEBUG Executor setup
 0:13.12 DEBUG Got command: 'log'
 0:13.12 DEBUG Connecting to WebDriver on URL: http://127.0.0.1:59566/
 0:14.12 DEBUG Got command: 'log'
 0:14.12 DEBUG Loading http://web-platform.test:8000/testharness_runner.html
 0:14.23 DEBUG Got command: 'init_succeeded'
 0:14.23 DEBUG new state: running
 0:14.24 DEBUG Dispatch run_test
 0:14.24 TEST_START: /html-aam/webkit-computedrole-crashes.html
 0:14.24 DEBUG Got command: 'log'
 0:14.23 DEBUG Executor setup done
 0:14.51 DEBUG Got command: 'log'
 0:14.51 DEBUG Got async callback: action
 0:14.51 DEBUG Got command: 'log'
 0:14.51 DEBUG Got action: get_computed_role
 0:14.51 DEBUG Got command: 'log'
 0:14.51 DEBUG Getting computed role for element: <Element node-E4F11A51-D051-47A7-9071-FE73B69965CC>
 0:14.52 DEBUG Got command: 'log'
 0:14.52 WARNING Action get_computed_role failed
 0:14.52 DEBUG Got command: 'log'
 0:14.52 WARNING Traceback (most recent call last):
  File "/path-redacted/wpt/tools/wptrunner/wptrunner/executors/base.py", line 741, in process_action
    result = action_handler(payload)
  File "/path-redacted/wpt/tools/wptrunner/wptrunner/executors/actions.py", line 66, in __call__
    return self.protocol.accessibility.get_computed_role(element)
  File "/path-redacted/wpt/tools/wptrunner/wptrunner/executors/executorwebdriver.py", line 198, in get_computed_role
    return element.get_computed_role()
  File "/path-redacted/wpt/tools/webdriver/webdriver/client.py", line 22, in inner
    return func(self, *args, **kwargs)
  File "/path-redacted/wpt/tools/webdriver/webdriver/client.py", line 901, in get_computed_role
    return self.send_element_command("GET", "computedrole")
  File "/path-redacted/wpt/tools/webdriver/webdriver/client.py", line 834, in send_element_command
    return self.session.send_session_command(method, url, body)
  File "/path-redacted/wpt/tools/webdriver/webdriver/client.py", line 661, in send_session_command
    return self.send_command(method, url, body, timeout)
  File "/path-redacted/wpt/tools/webdriver/webdriver/client.py", line 625, in send_command
    raise err
webdriver.error.UnknownErrorException: unknown error (500): 


 0:14.53 DEBUG Got command: 'test_ended'
 0:14.53 TEST_END: CRASH, expected OK
 0:14.53 INFO No more tests
 0:14.53 DEBUG new state: stop
 0:14.53 DEBUG TestRunnerManager main loop terminating, starting cleanup
 0:14.53 DEBUG Stopping WebDriver
 0:14.57 DEBUG OutputHandler.after_process_stop
 0:14.57 DEBUG ensure_runner_stopped
 0:14.57 DEBUG Stopping WebDriver
 0:14.57 DEBUG waiting for runner process to end
 0:14.57 DEBUG After join
 0:14.57 DEBUG Runner process exited with code 0
 0:14.57 DEBUG TestRunnerManager cleanup
 0:14.53 DEBUG Hanging up on WebDriver session
 0:14.53 INFO Closing logging queue
 0:14.53 INFO queue closed
 0:14.57 DEBUG TestRunnerManager teardown
 0:14.57 DEBUG Stopping WebDriver
 0:14.57 DEBUG TestRunnerManager main loop terminated
 0:14.57 DEBUG Stop flag set in ManagerGroup
 0:14.57 SUITE_END

web-platform-test
~~~~~~~~~~~~~~~~~
Ran 1 checks (1 tests)
Expected results: 0
Unexpected results: 1
  test: 1 (1 crash)

Unexpected Results
------------------
CRASH /html-aam/webkit-computedrole-crashes.html
 0:14.57 INFO Got 1 unexpected results, with 0 unexpected passes
 0:14.97 wptserve INFO Stopped http server on web-platform.test:8000
 0:14.97 wptserve INFO Stopped http server on web-platform.test:8001
 0:14.97 wptserve INFO Stopped http server on web-platform.test:8003
 0:14.99 wptserve INFO Stopped http server on web-platform.test:8002
 0:14.99 wptserve INFO Stopped http server on web-platform.test:8444
 0:14.99 wptserve INFO Stopped http server on web-platform.test:8446
 0:14.99 wptserve INFO Stopped http server on web-platform.test:8445
 0:14.99 wptserve INFO Stopped http server on web-platform.test:8443
 0:15.01 wptserve INFO Close on: (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('127.0.0.1', 8889))
 0:15.02 wptserve INFO Stopped http server on web-platform.test:9000
 0:15.02 wptserve INFO Close on: (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('127.0.0.1', 8888))
 0:15.07 INFO Closing logging queue
 0:15.07 INFO queue closed
Comment 2 Radar WebKit Bug Importer 2023-04-07 14:35:59 PDT
<rdar://problem/107769018>
Comment 3 James Craig 2023-04-07 14:37:08 PDT
Found as part of Interop 2023 Accessibility Investigation for HTML-AAM role tests:
https://github.com/web-platform-tests/wpt/pull/39427
Comment 4 James Craig 2023-04-07 14:51:08 PDT
Starting with Accessibility, since each of these elements is rendered as a portion of another element, it seems like the backing AccessibilityObject likely doesn't have a RenderObject.
Comment 5 James Craig 2023-04-07 14:51:41 PDT
But kick over to WebDriver if needed.
Comment 6 James Craig 2023-04-19 14:47:39 PDT
similar crash today when getting computedlabel for dialog:not([open])
Comment 7 James Craig 2023-04-19 14:52:15 PDT
The fragile HTML-AAM tests landed by the way, so repro on wpt/main is now: 

python3 ./wpt run --log-mach-level debug --log-mach - --webdriver-arg="--diagnose" safari html-aam/fragile/area-role.html

or

python3 ./wpt run --log-mach-level debug --log-mach - --webdriver-arg="--diagnose" safari html-aam/fragile/optgroup-role.html
Comment 8 James Craig 2023-04-19 23:36:50 PDT
This appears to be an issue in the WPT test harness, so tracking here instead. https://github.com/web-platform-tests/wpt/issues/39617