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