about summary refs log tree commit diff
path: root/pkgs/development/python-modules/selenium/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/python-modules/selenium/default.nix')
-rw-r--r--pkgs/development/python-modules/selenium/default.nix65
1 files changed, 30 insertions, 35 deletions
diff --git a/pkgs/development/python-modules/selenium/default.nix b/pkgs/development/python-modules/selenium/default.nix
index e606819159c02..a1db98deeb755 100644
--- a/pkgs/development/python-modules/selenium/default.nix
+++ b/pkgs/development/python-modules/selenium/default.nix
@@ -1,59 +1,54 @@
 { lib
-, stdenv
-, fetchPypi
 , fetchFromGitHub
 , buildPythonPackage
 , geckodriver
+, pytestCheckHook
+, pythonOlder
+, trio
+, trio-websocket
 , urllib3
-, xorg
 , nixosTests
 }:
 
-let
-  # Recompiling x_ignore_nofocus.so as the original one dlopen's libX11.so.6 by some
-  # absolute paths. Replaced by relative path so it is found when used in nix.
-  x_ignore_nofocus =
-    fetchFromGitHub {
-      owner = "SeleniumHQ";
-      repo = "selenium";
-      rev = "selenium-3.6.0";
-      sha256 = "13wf4hx4i7nhl4s8xkziwxl0km1j873syrj4amragj6mpip2wn8v";
-    };
-in
-
 buildPythonPackage rec {
   pname = "selenium";
-  version = "3.141.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "039hf9knvl4s3hp21bzwsp1g5ri9gxsh504dp48lc6nr1av35byy";
+  version = "4.2.0";
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "SeleniumHQ";
+    repo = "selenium";
+    rev = "selenium-${version}"; # check if there is a newer tag with -python suffix
+    sha256 = "sha256-KhBCMsWGRD7hJqumA1+K8AVhJ7hq26XkEa1QbgY0Q0w=";
   };
 
-  buildInputs = [ xorg.libX11 ];
+  postPatch = ''
+    substituteInPlace py/selenium/webdriver/firefox/service.py \
+      --replace 'DEFAULT_EXECUTABLE_PATH = "geckodriver"' 'DEFAULT_EXECUTABLE_PATH = "${geckodriver}/bin/geckodriver"'
+  '';
+
+  preConfigure = ''
+    cd py
+  '';
 
   propagatedBuildInputs = [
-    geckodriver urllib3
+    trio
+    trio-websocket
+    urllib3
+  ] ++ urllib3.optional-dependencies.secure
+  ++ urllib3.optional-dependencies.socks;
+
+  checkInputs = [
+    pytestCheckHook
   ];
 
-  postPatch = lib.optionalString stdenv.isLinux ''
-    cp "${x_ignore_nofocus}/cpp/linux-specific/"* .
-    substituteInPlace x_ignore_nofocus.c --replace "/usr/lib/libX11.so.6" "${lib.getLib xorg.libX11}/lib/libX11.so.6"
-    cc -c -fPIC x_ignore_nofocus.c -o x_ignore_nofocus.o
-    cc -shared \
-      -Wl,${if stdenv.isDarwin then "-install_name" else "-soname"},x_ignore_nofocus.so \
-      -o x_ignore_nofocus.so \
-      x_ignore_nofocus.o
-    cp -v x_ignore_nofocus.so selenium/webdriver/firefox/${if stdenv.is64bit then "amd64" else "x86"}/
-  '';
-
   passthru.tests = {
     testing-vaultwarden = nixosTests.vaultwarden;
   };
 
   meta = with lib; {
-    description = "The selenium package is used to automate web browser interaction from Python";
-    homepage = "http://www.seleniumhq.org";
+    description = "Bindings for Selenium WebDriver";
+    homepage = "https://selenium.dev/";
     license = licenses.asl20;
     maintainers = with maintainers; [ jraygauthier ];
   };