@@ -0,0 +1,59 @@
1+{ callPackage
2+, cypress
3+, nodejs-12_x
4+, # FIXME: duplicated from ./regen-nix. node2nix should expose this
5+ nodePackages
6+, xorg
7+, pkgs
8+, stdenv
9+,
10+}:
11+
12+let
13+ fromNode2nix = import ./cypress-example-kitchensink.nix {
14+ inherit pkgs;
15+ };
16+
17+ nodeDependencies = fromNode2nix.shell.nodeDependencies.overrideAttrs (o: {
18+ CYPRESS_INSTALL_BINARY = "0";
19+ PUPPETEER_SKIP_DOWNLOAD = "1";
20+ });
21+
22+ fontConfigEtc = (
23+ pkgs.nixos { config.fonts.fontconfig.enable = true; }
24+ ).config.environment.etc.fonts.source;
25+
26+in
27+stdenv.mkDerivation {
28+ name = "cypress-example-kitchensink";
29+ src = callPackage ./src.nix { };
30+ passthru.fc = fontConfigEtc;
31+ nativeBuildInputs = [
32+ cypress
33+ nodejs-12_x
34+ xorg.xorgserver
35+ nodePackages.jsonplaceholder
36+ ];
37+ FONTCONFIG_PATH = fontConfigEtc;
38+ postPatch = ''
39+ # Use our own offline backend. 15011 means js0n ;)
40+ sed -e 's^https://jsonplaceholder.cypress.io^http://localhost:15011^g' -i $(find . -type f)
41+ '';
42+ buildPhase = ''
43+ ln -s ${nodeDependencies}/lib/node_modules ./node_modules
44+ PATH="${nodeDependencies}/bin:$PATH"
45+ runHook preBuild
46+ PORT=15011 jsonplaceholder &
47+ # assumption: jsonplaceholder start far quicker than cypress run
48+
49+ export CYPRESS_RUN_BINARY=${cypress}/bin/Cypress
50+ export HOME=$PWD/home
51+ mkdir $HOME
52+ npm run test
53+ runHook postBuild
54+ '';
55+ installPhase = ''
56+ mkdir $out
57+ cp -r cypress/videos $out/
58+ '';
59+}