at master 2.1 kB view raw
1{ 2 lib, 3 fetchFromGitHub, 4 buildPythonPackage, 5 selenium-manager, 6 setuptools, 7 certifi, 8 pytestCheckHook, 9 pythonOlder, 10 trio, 11 trio-websocket, 12 typing-extensions, 13 websocket-client, 14 urllib3, 15 pytest-trio, 16 nixosTests, 17 stdenv, 18 python, 19}: 20 21buildPythonPackage rec { 22 pname = "selenium"; 23 version = "4.29.0"; 24 pyproject = true; 25 26 disabled = pythonOlder "3.9"; 27 28 src = fetchFromGitHub { 29 owner = "SeleniumHQ"; 30 repo = "selenium"; 31 tag = "selenium-${version}" + lib.optionalString (lib.versions.patch version != "0") "-python"; 32 hash = "sha256-IyMXgYl/TPTpe/Y0pFyJVKj4Mp0xbkg1LSCNHzFL3bE="; 33 }; 34 35 patches = [ ./dont-build-the-selenium-manager.patch ]; 36 37 preConfigure = '' 38 cd py 39 ''; 40 41 postInstall = '' 42 DST_PREFIX=$out/${python.sitePackages}/selenium/webdriver/ 43 DST_REMOTE=$DST_PREFIX/remote/ 44 DST_FF=$DST_PREFIX/firefox 45 cp ../rb/lib/selenium/webdriver/atoms/getAttribute.js $DST_REMOTE 46 cp ../rb/lib/selenium/webdriver/atoms/isDisplayed.js $DST_REMOTE 47 cp ../rb/lib/selenium/webdriver/atoms/findElements.js $DST_REMOTE 48 cp ../javascript/cdp-support/mutation-listener.js $DST_REMOTE 49 cp ../third_party/js/selenium/webdriver.json $DST_FF/webdriver_prefs.json 50 '' 51 + lib.optionalString stdenv.hostPlatform.isDarwin '' 52 mkdir -p $DST_PREFIX/common/macos 53 ln -s ${lib.getExe selenium-manager} $DST_PREFIX/common/macos/ 54 '' 55 + lib.optionalString stdenv.hostPlatform.isLinux '' 56 mkdir -p $DST_PREFIX/common/linux/ 57 ln -s ${lib.getExe selenium-manager} $DST_PREFIX/common/linux/ 58 ''; 59 60 build-system = [ setuptools ]; 61 62 dependencies = [ 63 certifi 64 trio 65 trio-websocket 66 urllib3 67 typing-extensions 68 websocket-client 69 ] 70 ++ urllib3.optional-dependencies.socks; 71 72 nativeCheckInputs = [ 73 pytestCheckHook 74 pytest-trio 75 ]; 76 77 __darwinAllowLocalNetworking = true; 78 79 passthru.tests = { 80 testing-vaultwarden = nixosTests.vaultwarden; 81 }; 82 83 meta = with lib; { 84 description = "Bindings for Selenium WebDriver"; 85 homepage = "https://selenium.dev/"; 86 license = licenses.asl20; 87 maintainers = with maintainers; [ jraygauthier ]; 88 }; 89}