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}