1{ lib
2, fetchFromGitHub
3, buildPythonPackage
4, certifi
5, geckodriver
6, pytestCheckHook
7, pythonOlder
8, trio
9, trio-websocket
10, urllib3
11, pytest-trio
12, nixosTests
13, stdenv
14, python
15}:
16
17buildPythonPackage rec {
18 pname = "selenium";
19 version = "4.14.0";
20 format = "setuptools";
21
22 disabled = pythonOlder "3.7";
23
24 src = fetchFromGitHub {
25 owner = "SeleniumHQ";
26 repo = "selenium";
27 # check if there is a newer tag with or without -python suffix
28 rev = "refs/tags/selenium-${version}";
29 hash = "sha256-cTMCKfFLUlJDbTUQA3Z/pKCE1RQQRMb4K8hKKn9HqvU=";
30 };
31
32 preConfigure = ''
33 cd py
34 '';
35
36 postInstall = ''
37 DST_PREFIX=$out/lib/${python.libPrefix}/site-packages/selenium/webdriver/
38 DST_REMOTE=$DST_PREFIX/remote/
39 DST_FF=$DST_PREFIX/firefox
40 cp ../rb/lib/selenium/webdriver/atoms/getAttribute.js $DST_REMOTE
41 cp ../rb/lib/selenium/webdriver/atoms/isDisplayed.js $DST_REMOTE
42 cp ../rb/lib/selenium/webdriver/atoms/findElements.js $DST_REMOTE
43 cp ../javascript/cdp-support/mutation-listener.js $DST_REMOTE
44 cp ../third_party/js/selenium/webdriver.json $DST_FF/webdriver_prefs.json
45 '' + lib.optionalString stdenv.isDarwin ''
46 mkdir -p $DST_PREFIX/common/macos
47 cp ../common/manager/macos/selenium-manager $DST_PREFIX/common/macos
48 '' + lib.optionalString stdenv.isLinux ''
49 mkdir -p $DST_PREFIX/common/linux/
50 cp ../common/manager/linux/selenium-manager $DST_PREFIX/common/linux/
51 '';
52
53 propagatedBuildInputs = [
54 certifi
55 trio
56 trio-websocket
57 urllib3
58 ] ++ urllib3.optional-dependencies.socks;
59
60 nativeCheckInputs = [
61 pytestCheckHook
62 pytest-trio
63 ];
64
65 passthru.tests = {
66 testing-vaultwarden = nixosTests.vaultwarden;
67 };
68
69 meta = with lib; {
70 description = "Bindings for Selenium WebDriver";
71 homepage = "https://selenium.dev/";
72 license = licenses.asl20;
73 maintainers = with maintainers; [ jraygauthier ];
74 };
75}