ucan-wg / rs-ucan

Rust implementation of UCAN
Apache License 2.0
63 stars 15 forks source link

Fix GitHub action headless browser tests #120

Closed bgins closed 1 year ago

bgins commented 1 year ago

Description

This PR implements the following changes:

The Chrome team recently released Chrome for Testing: https://developer.chrome.com/blog/chrome-for-testing/. As a part of the change, they have ended support for the endpoint we use to determine the required version of Chromedriver.

This PR simplifies our set up by switching to wasm-pack test, which automatically installs the correct version of Chromedriver.

Type of change

Test plan (required)

The run-tests actions should succeed.

cdata commented 1 year ago

I'm a little bit unsure about depending on wasm-pack to test this. If I don't use wasm-pack, how much certainty do I have about these tests continuing to pass for me over time?

Separately, but related, this is the change where we investigated and fixed this issue in Noosphere: https://github.com/subconsciousnetwork/noosphere/pull/514

bgins commented 1 year ago

I'm a little bit unsure about depending on wasm-pack to test this. If I don't use wasm-pack, how much certainty do I have about these tests continuing to pass for me over time?

That's a fair point. I can't say with certainty that it will continue to work in the future.

Separately, but related, this is the change where we investigated and fixed this issue in Noosphere: https://github.com/subconsciousnetwork/noosphere/pull/514

Regarding the Noosphere implementation, how can you be sure the retrieved Chromedriver version will match the Chrome version provided by apt-get?

I was tinkering with this yesterday and had hoped this would work out:

      - name: Setup Chrome and Chromedriver
        run: |
          CHROME_INSTALL_OUTPUT=( $(npx @puppeteer/browsers install chrome@stable) )
          CHROMEDRIVER_INSTALL_OUTPUT=( $(npx @puppeteer/browsers install chromedriver@stable) )
          CHROME_PATH=${CHROME_INSTALL_OUTPUT[1]}
          CHROMEDRIVER_PATH=${CHROMEDRIVER_INSTALL_OUTPUT[1]}
          sudo mv $CHROME_PATH $CHROMEDRIVER_PATH /usr/local/bin

This would install Chrome for Testing and Chromedriver provided by the Chrome team at guaranteed matching versions. But unfortunately it didn't, and I wasn't able to get to the bottom of why.

cdata commented 1 year ago

I guess the only way to be sure is to also use the Chrome binary distribution linked from the same source we're pulling chromedriver from. It should be doable following the same pattern we use for chromedriver, although annoying to find a convenient install location for the binary I suppose.

bgins commented 1 year ago

What would we think about using the setup-chromedriver GitHub action? (https://github.com/marketplace/actions/setup-chromedriver)

It looks like it is actively maintained. They updated with fixes a couple of days ago: https://github.com/nanasess/setup-chromedriver/pull/192