reactive-python / reactpy

It's React, but in Python
https://reactpy.dev
MIT License
7.83k stars 316 forks source link

Use Async WebDiver in Tests #591

Closed rmorshea closed 2 years ago

rmorshea commented 2 years ago

Current Situation

Currently, we run tests which rely on the browser using a synchronously executing web driver from Selenium. As a result, server implementations have been required to provide a run_in_thread method such that they can be run in the background while the blocking test code is allowed to proceed.

Unfortunately, some async servers don't play well with threads. This is primarily due to the fact that cleanly stopping a thread can be somewhat challenging. For example, IDOM is currently locked into version sanic<19.12 because later releases have been developed without consideration for threading.

Proposed Actions

As a result, we should switch to an async web driver like arsenic or pyppeteer and add a ServerType.run_async method to the various server implementations. Once this is done we can deprecate the ServerType.run_in_thread method.

Then lastly, we can upgrade Sanic to the latest version.

Work Items

Archmonger commented 2 years ago

We can also use arsenic instead of Selenium.

It would save us a lot of effort in developing custom tooling.

rmorshea commented 2 years ago

This is somewhat more urgent as a result of: https://github.com/advisories/GHSA-7p79-6x2v-5h88

Archmonger commented 2 years ago

Security issues are not publicly visible, and I don't have access to them.

rmorshea commented 2 years ago

I edited the link