[FIX] core: ability to run tours in Chrome 111
Chrome 111 enabled checking of websocket origin: if the WS connection sends an Origin head which is not whitelisted with the new `--remote-allow-origins` switch it is rejected. Turns out websocket-client (amongst others) *does* send an `Origin`, which trips the check, and means tours immediately break when trying to run them as Odoo's test harness is unable to connect to (and control) the devtools. Suppress sending `Origin` to fix the issue. To make the watch mode work, set `--remote-allow-origins`: since we specifically only bind the devtools to the loopback address (127.0.0.1) whatever issues this plugs are unlikely to affect us. We might eventually want to change the behaviour of the watch feature for UX reasons and remove this in the future though, either by working through the non-ws remote inspection (`chrome://inspect`) or by having the `watch` mode run in a normal browser directly instead of having a browser connect to a headless browser. Chrome 111 changeset: https://chromiumdash.appspot.com/commit/0154caeefc74530d5cb57ce71608beb1b77bca39 Chrome tracker issue: https://crbug.com/1422444 closes odoo/odoo#115067 X-original-commit: 47a02b3924c3e4d1690e336fdd764383393ee378 Signed-off-by: Xavier Morel (xmo) <xmo@odoo.com>
This commit is contained in:
@@ -975,6 +975,7 @@ class ChromeBrowser:
|
||||
'--remote-debugging-port': str(self.remote_debugging_port),
|
||||
'--no-sandbox': '',
|
||||
'--disable-gpu': '',
|
||||
'--remote-allow-origins': '*',
|
||||
# '--enable-precise-memory-info': '', # uncomment to debug memory leaks in qunit suite
|
||||
# '--js-flags': '--expose-gc', # uncomment to debug memory leaks in qunit suite
|
||||
}
|
||||
@@ -1063,7 +1064,7 @@ class ChromeBrowser:
|
||||
raise unittest.SkipTest("Error during Chrome headless connection")
|
||||
|
||||
def _open_websocket(self):
|
||||
self.ws = websocket.create_connection(self.ws_url, enable_multithread=True)
|
||||
self.ws = websocket.create_connection(self.ws_url, enable_multithread=True, suppress_origin=True)
|
||||
if self.ws.getstatus() != 101:
|
||||
raise unittest.SkipTest("Cannot connect to chrome dev tools")
|
||||
self.ws.settimeout(0.01)
|
||||
|
||||
Reference in New Issue
Block a user