diff --git a/.github/workflows/qa.yml b/.github/workflows/qa.yml index 96b1b7c..eaeef2c 100644 --- a/.github/workflows/qa.yml +++ b/.github/workflows/qa.yml @@ -39,6 +39,8 @@ jobs: - run: vendor/bin/phpcs --warning-severity=0 e2e: runs-on: ${{ matrix.os }} + env: + GITHUB_TOKEN: ${{ secrets.PAT }} strategy: matrix: os: [ ubuntu-latest, macos-latest, windows-latest ] diff --git a/README.md b/README.md index 139af3b..9c38351 100644 --- a/README.md +++ b/README.md @@ -46,3 +46,6 @@ For a full list of available commands, run `bdi list`. * google-chrome * chromium * firefox + +### Environment variables +* `GITHUB_TOKEN` - Geckodriver version resolver fetches the latest version from GitHub. You can set this environment variable to avoid rate limiting in CI environments. \ No newline at end of file diff --git a/src/Driver/GeckoDriver/VersionResolver.php b/src/Driver/GeckoDriver/VersionResolver.php index 5b85bba..0e59738 100644 --- a/src/Driver/GeckoDriver/VersionResolver.php +++ b/src/Driver/GeckoDriver/VersionResolver.php @@ -11,6 +11,7 @@ use RuntimeException; use Symfony\Contracts\HttpClient\HttpClientInterface; +use function getenv; use function krsort; use function Safe\json_decode; use function sprintf; @@ -19,9 +20,15 @@ final class VersionResolver implements VersionResolverInterface { private const LATEST_VERSION_ENDPOINT = 'https://api.github.com/repos/mozilla/geckodriver/releases/latest'; - private const MIN_REQUIRED_BROWSER_VERSION_FOR_LATEST = 60; + private const MIN_REQUIRED_BROWSER_VERSION_FOR_LATEST = 128; private const MIN_REQUIRED_BROWSER_VERSIONS = [ + 128 => '0.36.0', + 115 => '0.35.0', + 102 => '0.33.0', + 91 => '0.31.0', + 78 => '0.30.0', + 60 => '0.26.0', 57 => '0.25.0', 55 => '0.20.1', 53 => '0.18.0', @@ -57,7 +64,16 @@ public function fromBrowser(Browser $browser): Version public function latest(): Version { - $response = $this->httpClient->request('GET', self::LATEST_VERSION_ENDPOINT); + $options = []; + + $token = getenv('GITHUB_TOKEN'); + if ($token !== false && $token !== '') { + $options['headers'] = [ + 'Authorization' => sprintf('Bearer %s', $token), + ]; + } + + $response = $this->httpClient->request('GET', self::LATEST_VERSION_ENDPOINT, $options); /** @var array $data */ $data = json_decode($response->getContent(), true); diff --git a/tests/Driver/GeckoDriver/VersionResolverTest.php b/tests/Driver/GeckoDriver/VersionResolverTest.php index 0c8b982..0a6046b 100644 --- a/tests/Driver/GeckoDriver/VersionResolverTest.php +++ b/tests/Driver/GeckoDriver/VersionResolverTest.php @@ -35,8 +35,8 @@ static function (string $method, string $url): MockResponse { }, ); $this->versionResolver = new VersionResolver($this->httpClient); - $this->chrome = new Browser(BrowserName::GOOGLE_CHROME, Version::fromString('86.0.4240.80'), OperatingSystem::MACOS); - $this->firefox = new Browser(BrowserName::FIREFOX, Version::fromString('81.0.2'), OperatingSystem::MACOS); + $this->chrome = new Browser(BrowserName::GOOGLE_CHROME, Version::fromString('142.0.7444.60'), OperatingSystem::MACOS); + $this->firefox = new Browser(BrowserName::FIREFOX, Version::fromString('144.0.2'), OperatingSystem::MACOS); } public function testDoesNotSupportChrome(): void @@ -53,7 +53,7 @@ public function testLatestVersionForRecentBrowser(): void { $geckoVersion = $this->versionResolver->fromBrowser($this->firefox); - self::assertEquals(Version::fromString('0.28.0'), $geckoVersion); + self::assertEquals(Version::fromString('0.36.0'), $geckoVersion); } public function testVersionForOldBrowser(): void diff --git a/tests/fixtures/githubResponseGeckoLatest.json b/tests/fixtures/githubResponseGeckoLatest.json index 02a7b2d..c4ea289 100644 --- a/tests/fixtures/githubResponseGeckoLatest.json +++ b/tests/fixtures/githubResponseGeckoLatest.json @@ -1,19 +1,14 @@ { - "url": "https://api.github.com/repos/mozilla/geckodriver/releases/33414508", - "assets_url": "https://api.github.com/repos/mozilla/geckodriver/releases/33414508/assets", - "upload_url": "https://uploads.github.com/repos/mozilla/geckodriver/releases/33414508/assets{?name,label}", - "html_url": "https://github.com/mozilla/geckodriver/releases/tag/v0.28.0", - "id": 33414508, - "node_id": "MDc6UmVsZWFzZTMzNDE0NTA4", - "tag_name": "v0.28.0", - "target_commitish": "release", - "name": "0.28.0", - "draft": false, + "url": "https://api.github.com/repos/mozilla/geckodriver/releases/202267170", + "assets_url": "https://api.github.com/repos/mozilla/geckodriver/releases/202267170/assets", + "upload_url": "https://uploads.github.com/repos/mozilla/geckodriver/releases/202267170/assets{?name,label}", + "html_url": "https://github.com/mozilla/geckodriver/releases/tag/v0.36.0", + "id": 202267170, "author": { "login": "whimboo", "id": 129603, "node_id": "MDQ6VXNlcjEyOTYwMw==", - "avatar_url": "https://avatars2.githubusercontent.com/u/129603?v=4", + "avatar_url": "https://avatars.githubusercontent.com/u/129603?v=4", "gravatar_id": "", "url": "https://api.github.com/users/whimboo", "html_url": "https://github.com/whimboo", @@ -27,23 +22,31 @@ "events_url": "https://api.github.com/users/whimboo/events{/privacy}", "received_events_url": "https://api.github.com/users/whimboo/received_events", "type": "User", + "user_view_type": "public", "site_admin": false }, + "node_id": "RE_kwDOAYLgmc4MDloi", + "tag_name": "v0.36.0", + "target_commitish": "release", + "name": "0.36.0", + "draft": false, + "immutable": false, "prerelease": false, - "created_at": "2020-11-03T16:47:06Z", - "published_at": "2020-11-03T17:01:09Z", + "created_at": "2025-02-25T11:06:13Z", + "updated_at": "2025-04-11T11:14:44Z", + "published_at": "2025-02-25T11:12:36Z", "assets": [ { - "url": "https://api.github.com/repos/mozilla/geckodriver/releases/assets/27894713", - "id": 27894713, - "node_id": "MDEyOlJlbGVhc2VBc3NldDI3ODk0NzEz", - "name": "geckodriver-v0.28.0-linux32.tar.gz", + "url": "https://api.github.com/repos/mozilla/geckodriver/releases/assets/232398253", + "id": 232398253, + "node_id": "RA_kwDOAYLgmc4N2h2t", + "name": "geckodriver-v0.36.0-linux-aarch64.tar.gz", "label": null, "uploader": { "login": "whimboo", "id": 129603, "node_id": "MDQ6VXNlcjEyOTYwMw==", - "avatar_url": "https://avatars2.githubusercontent.com/u/129603?v=4", + "avatar_url": "https://avatars.githubusercontent.com/u/129603?v=4", "gravatar_id": "", "url": "https://api.github.com/users/whimboo", "html_url": "https://github.com/whimboo", @@ -57,27 +60,29 @@ "events_url": "https://api.github.com/users/whimboo/events{/privacy}", "received_events_url": "https://api.github.com/users/whimboo/received_events", "type": "User", + "user_view_type": "public", "site_admin": false }, "content_type": "application/x-gzip", "state": "uploaded", - "size": 2790467, - "download_count": 670, - "created_at": "2020-11-03T17:03:09Z", - "updated_at": "2020-11-03T17:03:13Z", - "browser_download_url": "https://github.com/mozilla/geckodriver/releases/download/v0.28.0/geckodriver-v0.28.0-linux32.tar.gz" + "size": 2171662, + "digest": null, + "download_count": 456612, + "created_at": "2025-02-25T11:07:39Z", + "updated_at": "2025-02-25T11:07:43Z", + "browser_download_url": "https://github.com/mozilla/geckodriver/releases/download/v0.36.0/geckodriver-v0.36.0-linux-aarch64.tar.gz" }, { - "url": "https://api.github.com/repos/mozilla/geckodriver/releases/assets/27894734", - "id": 27894734, - "node_id": "MDEyOlJlbGVhc2VBc3NldDI3ODk0NzM0", - "name": "geckodriver-v0.28.0-linux32.tar.gz.asc", + "url": "https://api.github.com/repos/mozilla/geckodriver/releases/assets/232398267", + "id": 232398267, + "node_id": "RA_kwDOAYLgmc4N2h27", + "name": "geckodriver-v0.36.0-linux-aarch64.tar.gz.asc", "label": null, "uploader": { "login": "whimboo", "id": 129603, "node_id": "MDQ6VXNlcjEyOTYwMw==", - "avatar_url": "https://avatars2.githubusercontent.com/u/129603?v=4", + "avatar_url": "https://avatars.githubusercontent.com/u/129603?v=4", "gravatar_id": "", "url": "https://api.github.com/users/whimboo", "html_url": "https://github.com/whimboo", @@ -91,27 +96,29 @@ "events_url": "https://api.github.com/users/whimboo/events{/privacy}", "received_events_url": "https://api.github.com/users/whimboo/received_events", "type": "User", + "user_view_type": "public", "site_admin": false }, "content_type": "text/plain", "state": "uploaded", "size": 833, - "download_count": 436, - "created_at": "2020-11-03T17:03:13Z", - "updated_at": "2020-11-03T17:03:14Z", - "browser_download_url": "https://github.com/mozilla/geckodriver/releases/download/v0.28.0/geckodriver-v0.28.0-linux32.tar.gz.asc" + "digest": null, + "download_count": 19446, + "created_at": "2025-02-25T11:07:43Z", + "updated_at": "2025-02-25T11:07:43Z", + "browser_download_url": "https://github.com/mozilla/geckodriver/releases/download/v0.36.0/geckodriver-v0.36.0-linux-aarch64.tar.gz.asc" }, { - "url": "https://api.github.com/repos/mozilla/geckodriver/releases/assets/27894735", - "id": 27894735, - "node_id": "MDEyOlJlbGVhc2VBc3NldDI3ODk0NzM1", - "name": "geckodriver-v0.28.0-linux64.tar.gz", + "url": "https://api.github.com/repos/mozilla/geckodriver/releases/assets/232398270", + "id": 232398270, + "node_id": "RA_kwDOAYLgmc4N2h2-", + "name": "geckodriver-v0.36.0-linux32.tar.gz", "label": null, "uploader": { "login": "whimboo", "id": 129603, "node_id": "MDQ6VXNlcjEyOTYwMw==", - "avatar_url": "https://avatars2.githubusercontent.com/u/129603?v=4", + "avatar_url": "https://avatars.githubusercontent.com/u/129603?v=4", "gravatar_id": "", "url": "https://api.github.com/users/whimboo", "html_url": "https://github.com/whimboo", @@ -125,27 +132,29 @@ "events_url": "https://api.github.com/users/whimboo/events{/privacy}", "received_events_url": "https://api.github.com/users/whimboo/received_events", "type": "User", + "user_view_type": "public", "site_admin": false }, "content_type": "application/x-gzip", "state": "uploaded", - "size": 2650003, - "download_count": 26114, - "created_at": "2020-11-03T17:03:14Z", - "updated_at": "2020-11-03T17:03:17Z", - "browser_download_url": "https://github.com/mozilla/geckodriver/releases/download/v0.28.0/geckodriver-v0.28.0-linux64.tar.gz" + "size": 2266693, + "digest": null, + "download_count": 51169, + "created_at": "2025-02-25T11:07:43Z", + "updated_at": "2025-02-25T11:07:50Z", + "browser_download_url": "https://github.com/mozilla/geckodriver/releases/download/v0.36.0/geckodriver-v0.36.0-linux32.tar.gz" }, { - "url": "https://api.github.com/repos/mozilla/geckodriver/releases/assets/27894739", - "id": 27894739, - "node_id": "MDEyOlJlbGVhc2VBc3NldDI3ODk0NzM5", - "name": "geckodriver-v0.28.0-linux64.tar.gz.asc", + "url": "https://api.github.com/repos/mozilla/geckodriver/releases/assets/232398302", + "id": 232398302, + "node_id": "RA_kwDOAYLgmc4N2h3e", + "name": "geckodriver-v0.36.0-linux32.tar.gz.asc", "label": null, "uploader": { "login": "whimboo", "id": 129603, "node_id": "MDQ6VXNlcjEyOTYwMw==", - "avatar_url": "https://avatars2.githubusercontent.com/u/129603?v=4", + "avatar_url": "https://avatars.githubusercontent.com/u/129603?v=4", "gravatar_id": "", "url": "https://api.github.com/users/whimboo", "html_url": "https://github.com/whimboo", @@ -159,27 +168,29 @@ "events_url": "https://api.github.com/users/whimboo/events{/privacy}", "received_events_url": "https://api.github.com/users/whimboo/received_events", "type": "User", + "user_view_type": "public", "site_admin": false }, "content_type": "text/plain", "state": "uploaded", "size": 833, - "download_count": 422, - "created_at": "2020-11-03T17:03:17Z", - "updated_at": "2020-11-03T17:03:18Z", - "browser_download_url": "https://github.com/mozilla/geckodriver/releases/download/v0.28.0/geckodriver-v0.28.0-linux64.tar.gz.asc" + "digest": null, + "download_count": 18792, + "created_at": "2025-02-25T11:07:50Z", + "updated_at": "2025-02-25T11:07:51Z", + "browser_download_url": "https://github.com/mozilla/geckodriver/releases/download/v0.36.0/geckodriver-v0.36.0-linux32.tar.gz.asc" }, { - "url": "https://api.github.com/repos/mozilla/geckodriver/releases/assets/27894740", - "id": 27894740, - "node_id": "MDEyOlJlbGVhc2VBc3NldDI3ODk0NzQw", - "name": "geckodriver-v0.28.0-macos.tar.gz", + "url": "https://api.github.com/repos/mozilla/geckodriver/releases/assets/232398305", + "id": 232398305, + "node_id": "RA_kwDOAYLgmc4N2h3h", + "name": "geckodriver-v0.36.0-linux64.tar.gz", "label": null, "uploader": { "login": "whimboo", "id": 129603, "node_id": "MDQ6VXNlcjEyOTYwMw==", - "avatar_url": "https://avatars2.githubusercontent.com/u/129603?v=4", + "avatar_url": "https://avatars.githubusercontent.com/u/129603?v=4", "gravatar_id": "", "url": "https://api.github.com/users/whimboo", "html_url": "https://github.com/whimboo", @@ -193,27 +204,173 @@ "events_url": "https://api.github.com/users/whimboo/events{/privacy}", "received_events_url": "https://api.github.com/users/whimboo/received_events", "type": "User", + "user_view_type": "public", "site_admin": false }, "content_type": "application/x-gzip", "state": "uploaded", - "size": 1902197, - "download_count": 7748, - "created_at": "2020-11-03T17:03:18Z", - "updated_at": "2020-11-03T17:03:21Z", - "browser_download_url": "https://github.com/mozilla/geckodriver/releases/download/v0.28.0/geckodriver-v0.28.0-macos.tar.gz" + "size": 2306404, + "digest": null, + "download_count": 13265476, + "created_at": "2025-02-25T11:07:51Z", + "updated_at": "2025-02-25T11:07:53Z", + "browser_download_url": "https://github.com/mozilla/geckodriver/releases/download/v0.36.0/geckodriver-v0.36.0-linux64.tar.gz" + }, + { + "url": "https://api.github.com/repos/mozilla/geckodriver/releases/assets/232398309", + "id": 232398309, + "node_id": "RA_kwDOAYLgmc4N2h3l", + "name": "geckodriver-v0.36.0-linux64.tar.gz.asc", + "label": null, + "uploader": { + "login": "whimboo", + "id": 129603, + "node_id": "MDQ6VXNlcjEyOTYwMw==", + "avatar_url": "https://avatars.githubusercontent.com/u/129603?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/whimboo", + "html_url": "https://github.com/whimboo", + "followers_url": "https://api.github.com/users/whimboo/followers", + "following_url": "https://api.github.com/users/whimboo/following{/other_user}", + "gists_url": "https://api.github.com/users/whimboo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/whimboo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/whimboo/subscriptions", + "organizations_url": "https://api.github.com/users/whimboo/orgs", + "repos_url": "https://api.github.com/users/whimboo/repos", + "events_url": "https://api.github.com/users/whimboo/events{/privacy}", + "received_events_url": "https://api.github.com/users/whimboo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "text/plain", + "state": "uploaded", + "size": 833, + "digest": null, + "download_count": 29750, + "created_at": "2025-02-25T11:07:53Z", + "updated_at": "2025-02-25T11:07:54Z", + "browser_download_url": "https://github.com/mozilla/geckodriver/releases/download/v0.36.0/geckodriver-v0.36.0-linux64.tar.gz.asc" + }, + { + "url": "https://api.github.com/repos/mozilla/geckodriver/releases/assets/232398313", + "id": 232398313, + "node_id": "RA_kwDOAYLgmc4N2h3p", + "name": "geckodriver-v0.36.0-macos-aarch64.tar.gz", + "label": null, + "uploader": { + "login": "whimboo", + "id": 129603, + "node_id": "MDQ6VXNlcjEyOTYwMw==", + "avatar_url": "https://avatars.githubusercontent.com/u/129603?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/whimboo", + "html_url": "https://github.com/whimboo", + "followers_url": "https://api.github.com/users/whimboo/followers", + "following_url": "https://api.github.com/users/whimboo/following{/other_user}", + "gists_url": "https://api.github.com/users/whimboo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/whimboo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/whimboo/subscriptions", + "organizations_url": "https://api.github.com/users/whimboo/orgs", + "repos_url": "https://api.github.com/users/whimboo/repos", + "events_url": "https://api.github.com/users/whimboo/events{/privacy}", + "received_events_url": "https://api.github.com/users/whimboo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "application/x-gzip", + "state": "uploaded", + "size": 2066443, + "digest": null, + "download_count": 814579, + "created_at": "2025-02-25T11:07:54Z", + "updated_at": "2025-02-25T11:07:57Z", + "browser_download_url": "https://github.com/mozilla/geckodriver/releases/download/v0.36.0/geckodriver-v0.36.0-macos-aarch64.tar.gz" + }, + { + "url": "https://api.github.com/repos/mozilla/geckodriver/releases/assets/232398316", + "id": 232398316, + "node_id": "RA_kwDOAYLgmc4N2h3s", + "name": "geckodriver-v0.36.0-macos.tar.gz", + "label": null, + "uploader": { + "login": "whimboo", + "id": 129603, + "node_id": "MDQ6VXNlcjEyOTYwMw==", + "avatar_url": "https://avatars.githubusercontent.com/u/129603?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/whimboo", + "html_url": "https://github.com/whimboo", + "followers_url": "https://api.github.com/users/whimboo/followers", + "following_url": "https://api.github.com/users/whimboo/following{/other_user}", + "gists_url": "https://api.github.com/users/whimboo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/whimboo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/whimboo/subscriptions", + "organizations_url": "https://api.github.com/users/whimboo/orgs", + "repos_url": "https://api.github.com/users/whimboo/repos", + "events_url": "https://api.github.com/users/whimboo/events{/privacy}", + "received_events_url": "https://api.github.com/users/whimboo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "application/x-gzip", + "state": "uploaded", + "size": 2291861, + "digest": null, + "download_count": 375024, + "created_at": "2025-02-25T11:07:57Z", + "updated_at": "2025-02-25T11:08:00Z", + "browser_download_url": "https://github.com/mozilla/geckodriver/releases/download/v0.36.0/geckodriver-v0.36.0-macos.tar.gz" + }, + { + "url": "https://api.github.com/repos/mozilla/geckodriver/releases/assets/232398318", + "id": 232398318, + "node_id": "RA_kwDOAYLgmc4N2h3u", + "name": "geckodriver-v0.36.0-win-aarch64.zip", + "label": null, + "uploader": { + "login": "whimboo", + "id": 129603, + "node_id": "MDQ6VXNlcjEyOTYwMw==", + "avatar_url": "https://avatars.githubusercontent.com/u/129603?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/whimboo", + "html_url": "https://github.com/whimboo", + "followers_url": "https://api.github.com/users/whimboo/followers", + "following_url": "https://api.github.com/users/whimboo/following{/other_user}", + "gists_url": "https://api.github.com/users/whimboo/gists{/gist_id}", + "starred_url": "https://api.github.com/users/whimboo/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/whimboo/subscriptions", + "organizations_url": "https://api.github.com/users/whimboo/orgs", + "repos_url": "https://api.github.com/users/whimboo/repos", + "events_url": "https://api.github.com/users/whimboo/events{/privacy}", + "received_events_url": "https://api.github.com/users/whimboo/received_events", + "type": "User", + "user_view_type": "public", + "site_admin": false + }, + "content_type": "application/zip", + "state": "uploaded", + "size": 1695995, + "digest": null, + "download_count": 118794, + "created_at": "2025-02-25T11:08:00Z", + "updated_at": "2025-02-25T11:08:02Z", + "browser_download_url": "https://github.com/mozilla/geckodriver/releases/download/v0.36.0/geckodriver-v0.36.0-win-aarch64.zip" }, { - "url": "https://api.github.com/repos/mozilla/geckodriver/releases/assets/27894742", - "id": 27894742, - "node_id": "MDEyOlJlbGVhc2VBc3NldDI3ODk0NzQy", - "name": "geckodriver-v0.28.0-win32.zip", + "url": "https://api.github.com/repos/mozilla/geckodriver/releases/assets/232398322", + "id": 232398322, + "node_id": "RA_kwDOAYLgmc4N2h3y", + "name": "geckodriver-v0.36.0-win32.zip", "label": null, "uploader": { "login": "whimboo", "id": 129603, "node_id": "MDQ6VXNlcjEyOTYwMw==", - "avatar_url": "https://avatars2.githubusercontent.com/u/129603?v=4", + "avatar_url": "https://avatars.githubusercontent.com/u/129603?v=4", "gravatar_id": "", "url": "https://api.github.com/users/whimboo", "html_url": "https://github.com/whimboo", @@ -227,27 +384,29 @@ "events_url": "https://api.github.com/users/whimboo/events{/privacy}", "received_events_url": "https://api.github.com/users/whimboo/received_events", "type": "User", + "user_view_type": "public", "site_admin": false }, "content_type": "application/zip", "state": "uploaded", - "size": 1421771, - "download_count": 3690, - "created_at": "2020-11-03T17:03:21Z", - "updated_at": "2020-11-03T17:03:23Z", - "browser_download_url": "https://github.com/mozilla/geckodriver/releases/download/v0.28.0/geckodriver-v0.28.0-win32.zip" + "size": 1780945, + "digest": null, + "download_count": 361140, + "created_at": "2025-02-25T11:08:02Z", + "updated_at": "2025-02-25T11:08:05Z", + "browser_download_url": "https://github.com/mozilla/geckodriver/releases/download/v0.36.0/geckodriver-v0.36.0-win32.zip" }, { - "url": "https://api.github.com/repos/mozilla/geckodriver/releases/assets/27894747", - "id": 27894747, - "node_id": "MDEyOlJlbGVhc2VBc3NldDI3ODk0NzQ3", - "name": "geckodriver-v0.28.0-win64.zip", + "url": "https://api.github.com/repos/mozilla/geckodriver/releases/assets/232398326", + "id": 232398326, + "node_id": "RA_kwDOAYLgmc4N2h32", + "name": "geckodriver-v0.36.0-win64.zip", "label": null, "uploader": { "login": "whimboo", "id": 129603, "node_id": "MDQ6VXNlcjEyOTYwMw==", - "avatar_url": "https://avatars2.githubusercontent.com/u/129603?v=4", + "avatar_url": "https://avatars.githubusercontent.com/u/129603?v=4", "gravatar_id": "", "url": "https://api.github.com/users/whimboo", "html_url": "https://github.com/whimboo", @@ -261,18 +420,32 @@ "events_url": "https://api.github.com/users/whimboo/events{/privacy}", "received_events_url": "https://api.github.com/users/whimboo/received_events", "type": "User", + "user_view_type": "public", "site_admin": false }, "content_type": "application/zip", "state": "uploaded", - "size": 1504552, - "download_count": 19457, - "created_at": "2020-11-03T17:03:32Z", - "updated_at": "2020-11-03T17:03:53Z", - "browser_download_url": "https://github.com/mozilla/geckodriver/releases/download/v0.28.0/geckodriver-v0.28.0-win64.zip" + "size": 1845646, + "digest": null, + "download_count": 3137265, + "created_at": "2025-02-25T11:08:05Z", + "updated_at": "2025-02-25T11:08:08Z", + "browser_download_url": "https://github.com/mozilla/geckodriver/releases/download/v0.36.0/geckodriver-v0.36.0-win64.zip" } ], - "tarball_url": "https://api.github.com/repos/mozilla/geckodriver/tarball/v0.28.0", - "zipball_url": "https://api.github.com/repos/mozilla/geckodriver/zipball/v0.28.0", - "body": "0.28.0 (2020-11-03, `c00d2b6acd3f`)\r\n--------------------\r\n\r\n### Known problems\r\n\r\n- _macOS 10.15 (Catalina):_\r\n\r\n Due to the requirement from Apple that all programs must be notarized, geckodriver will not work on Catalina if you manually download it through another notarized program, such as Firefox.\r\n\r\n Whilst we are working on a repackaging fix for this problem, you can find more details on how to work around this issue in the [macOS notarization](https://firefox-source-docs.mozilla.org/testing/geckodriver/Notarization.html) section of the documentation.\r\n\r\n### Added\r\n\r\n- The command line flag `--android-storage` has been added, to allow geckodriver to also control Firefox on root-less Android devices. See the [documentation](https://firefox-source-docs.mozilla.org/testing/geckodriver/Flags.html) for available values.\r\n\r\n### Fixed\r\n\r\n- Firefox can be started again via a shell script that is located outside of the Firefox directory on Linux.\r\n\r\n- If Firefox cannot be started by geckodriver the real underlying error message is now being reported.\r\n\r\n- Version numbers for minor and extended support releases of Firefox are now parsed correctly.\r\n\r\n### Removed\r\n\r\n- Since Firefox 72 extension commands for finding an element’s anonymous children and querying its attributes are no longer needed, and have been removed." + "tarball_url": "https://api.github.com/repos/mozilla/geckodriver/tarball/v0.36.0", + "zipball_url": "https://api.github.com/repos/mozilla/geckodriver/zipball/v0.36.0", + "body": "## 0.36.0 (2025-02-25, `a3d508507022`)\r\n\r\n### Known problems\r\n\r\n- _Startup hang with Firefox running in a container (e.g. snap, flatpak):_\r\n\r\n When Firefox is packaged inside a container (like the default Firefox browser\r\n shipped with Ubuntu 22.04), it may see a different filesystem to the host.\r\n This can affect access to the generated profile directory, which may result\r\n in a hang when starting Firefox. Workarounds are listed in the geckodriver\r\n [usage documentation](https://firefox-source-docs.mozilla.org/testing/geckodriver/Usage.html#Running-Firefox-in-an-container-based-package).\r\n\r\n- Virtual Authenticator endpoints are currently unreliable.\r\n\r\n Since their introduction in geckodriver 0.34.0, several Virtual Authenticator\r\n endpoints have been reported as non-functional or behaving unexpectedly.\r\n We recommend avoiding the use of these commands until the known issues have\r\n been resolved.\r\n\r\n### Added\r\n\r\n- Support for searching the Firefox Developer Edition’s default path on macOS.\r\n\r\n Implemented by [Gatlin Newhouse](https://github.com/gatlinnewhouse).\r\n\r\n- Ability to push a WebExtension archive as created from a base64 encoded string\r\n to an Android device.\r\n\r\n- Added an `allowPrivateBrowsing` field for POST `/session/{session id}/moz/addon/install`\r\n to allow the installation of a WebExtension that is enabled in Private Browsing mode.\r\n\r\n- Introduced the [`--allow-system-access`](https://firefox-source-docs.mozilla.org/testing/geckodriver/Flags.html#allow-system-access) command line argument for geckodriver, which will\r\n be required for future versions of Firefox (potentially starting with 138.0) to allow\r\n testing in the `chrome` context.\r\n\r\n- Added support for preserving crash dumps for crash report analysis when\r\n Firefox crashes. If the `MINIDUMP_SAVE_PATH` environment variable is set\r\n to an existing folder, crash dumps will be saved accordingly. For mobile\r\n devices, the generated minidump files will be automatically transferred\r\n to the host machine.\r\n\r\n For more details see the documentation of how to handle [crash reports](https://firefox-source-docs.mozilla.org/testing/geckodriver/CrashReports.html).\r\n\r\n### Changed\r\n\r\n- Updated the type of the `x` and `y` fields of pointer move actions (mouse and touch)\r\n from integer to fractional numbers to ensure a more precise input control.\r\n\r\n Note: Support for fractional values is available starting with Firefox 137.\r\n For older versions, clients or tests must explicitly pass integer values for\r\n both fields.\r\n\r\n- Replaced `serde_yaml` with `yaml-rust` because it's no longer officially supported.\r\n\r\n- The `--enable-crash-reporter` command line argument has been deprecated to\r\n prevent crash reports from being submitted to Socorro. This argument will be\r\n completely removed in the next version.\r\n\r\n Instead, use the `MINIDUMP_SAVE_PATH` environment variable to get minidump\r\n files saved to a specified location.\r\n\r\n### Fixed\r\n\r\n- Fixed route registration for `WebAuthn` commands, which were introduced in\r\n geckodriver 0.34.0 but mistakenly registered under `/sessions/` instead of\r\n `/session/`, causing them to be non-functional.\r\n\r\n### Removed\r\n\r\n- Removed the `-no-remote` command-line argument usage for Firefox, which does no longer exist.\r\n", + "reactions": { + "url": "https://api.github.com/repos/mozilla/geckodriver/releases/202267170/reactions", + "total_count": 81, + "+1": 52, + "-1": 0, + "laugh": 0, + "hooray": 0, + "confused": 0, + "heart": 10, + "rocket": 11, + "eyes": 8 + } } \ No newline at end of file