@webhands/core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/dist/cookies-export.d.ts +56 -0
  2. package/dist/cookies-export.d.ts.map +1 -0
  3. package/dist/cookies-export.js +69 -0
  4. package/dist/cookies-export.js.map +1 -0
  5. package/dist/errors.d.ts +126 -0
  6. package/dist/errors.d.ts.map +1 -0
  7. package/dist/errors.js +135 -0
  8. package/dist/errors.js.map +1 -0
  9. package/dist/index.d.ts +16 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +15 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/playwright-attach-transport.d.ts +28 -0
  14. package/dist/playwright-attach-transport.d.ts.map +1 -0
  15. package/dist/playwright-attach-transport.js +175 -0
  16. package/dist/playwright-attach-transport.js.map +1 -0
  17. package/dist/playwright-launch-transport.d.ts +90 -0
  18. package/dist/playwright-launch-transport.d.ts.map +1 -0
  19. package/dist/playwright-launch-transport.js +305 -0
  20. package/dist/playwright-launch-transport.js.map +1 -0
  21. package/dist/profile-location.d.ts +61 -0
  22. package/dist/profile-location.d.ts.map +1 -0
  23. package/dist/profile-location.js +61 -0
  24. package/dist/profile-location.js.map +1 -0
  25. package/dist/remote-session.d.ts +22 -0
  26. package/dist/remote-session.d.ts.map +1 -0
  27. package/dist/remote-session.js +57 -0
  28. package/dist/remote-session.js.map +1 -0
  29. package/dist/seam.d.ts +212 -0
  30. package/dist/seam.d.ts.map +1 -0
  31. package/dist/seam.js +25 -0
  32. package/dist/seam.js.map +1 -0
  33. package/dist/session-endpoint.d.ts +53 -0
  34. package/dist/session-endpoint.d.ts.map +1 -0
  35. package/dist/session-endpoint.js +75 -0
  36. package/dist/session-endpoint.js.map +1 -0
  37. package/dist/session-rpc.d.ts +82 -0
  38. package/dist/session-rpc.d.ts.map +1 -0
  39. package/dist/session-rpc.js +107 -0
  40. package/dist/session-rpc.js.map +1 -0
  41. package/dist/session-server.d.ts +79 -0
  42. package/dist/session-server.d.ts.map +1 -0
  43. package/dist/session-server.js +141 -0
  44. package/dist/session-server.js.map +1 -0
  45. package/dist/setup-profile.d.ts +84 -0
  46. package/dist/setup-profile.d.ts.map +1 -0
  47. package/dist/setup-profile.js +52 -0
  48. package/dist/setup-profile.js.map +1 -0
  49. package/dist/stub-transport.d.ts +26 -0
  50. package/dist/stub-transport.d.ts.map +1 -0
  51. package/dist/stub-transport.js +76 -0
  52. package/dist/stub-transport.js.map +1 -0
  53. package/dist/test-fixtures/fixture-pages.d.ts +12 -0
  54. package/dist/test-fixtures/fixture-pages.d.ts.map +1 -0
  55. package/dist/test-fixtures/fixture-pages.js +204 -0
  56. package/dist/test-fixtures/fixture-pages.js.map +1 -0
  57. package/dist/test-fixtures/fixture-server.d.ts +19 -0
  58. package/dist/test-fixtures/fixture-server.d.ts.map +1 -0
  59. package/dist/test-fixtures/fixture-server.js +41 -0
  60. package/dist/test-fixtures/fixture-server.js.map +1 -0
  61. package/package.json +34 -0
  62. package/src/cookies-export.ts +91 -0
  63. package/src/errors.ts +185 -0
  64. package/src/index.ts +89 -0
  65. package/src/playwright-attach-transport.ts +214 -0
  66. package/src/playwright-launch-transport.ts +363 -0
  67. package/src/profile-location.ts +92 -0
  68. package/src/remote-session.ts +66 -0
  69. package/src/seam.ts +222 -0
  70. package/src/session-endpoint.ts +104 -0
  71. package/src/session-rpc.ts +143 -0
  72. package/src/session-server.ts +231 -0
  73. package/src/setup-profile.ts +134 -0
  74. package/src/stub-transport.ts +100 -0
  75. package/src/test-fixtures/fixture-pages.ts +210 -0
  76. package/src/test-fixtures/fixture-server.ts +54 -0
@@ -0,0 +1,54 @@
1
+ import {createServer, type Server} from 'node:http';
2
+ import {FIXTURE_PAGES} from './fixture-pages.js';
3
+
4
+ /** A running fixture server, with the base URL to point a browser at. */
5
+ export interface FixtureServer {
6
+ /** The base URL, e.g. `http://127.0.0.1:52831`. */
7
+ readonly url: string;
8
+ /** Stop the server and release the port. */
9
+ close(): Promise<void>;
10
+ }
11
+
12
+ /**
13
+ * Start a local HTTP server that serves the controlled static fixture pages
14
+ * from {@link FIXTURE_PAGES}. This is the DETERMINISTIC target for later
15
+ * verb-behaviour tests (navigate / snapshot / click / type / eval / wait /
16
+ * cookies): those tests drive a real browser against this server instead of a
17
+ * third-party site, so they never rot on someone else's DOM.
18
+ *
19
+ * Binds to `127.0.0.1` on an OS-assigned ephemeral port (pass a fixed `port`
20
+ * only if a test needs one). `/` serves `index.html`.
21
+ */
22
+ export async function startFixtureServer(port = 0): Promise<FixtureServer> {
23
+ const server: Server = createServer((req, res) => {
24
+ const rawPath = (req.url ?? '/').split('?')[0];
25
+ const key = rawPath === '/' ? 'index.html' : rawPath.replace(/^\/+/, '');
26
+ const body = FIXTURE_PAGES[key];
27
+ if (body === undefined) {
28
+ res.writeHead(404, {'content-type': 'text/plain; charset=utf-8'});
29
+ res.end('not found');
30
+ return;
31
+ }
32
+ res.writeHead(200, {'content-type': 'text/html; charset=utf-8'});
33
+ res.end(body);
34
+ });
35
+
36
+ await new Promise<void>((resolve) =>
37
+ server.listen(port, '127.0.0.1', resolve),
38
+ );
39
+
40
+ const address = server.address();
41
+ if (address === null || typeof address === 'string') {
42
+ await new Promise<void>((resolve) => server.close(() => resolve()));
43
+ throw new Error('fixture server failed to bind to a TCP port');
44
+ }
45
+
46
+ return {
47
+ url: `http://127.0.0.1:${address.port}`,
48
+ close() {
49
+ return new Promise<void>((resolve, reject) => {
50
+ server.close((err) => (err ? reject(err) : resolve()));
51
+ });
52
+ },
53
+ };
54
+ }