{"id":13657136,"url":"https://github.com/vercel/test-listen","last_synced_at":"2025-06-24T00:32:52.098Z","repository":{"id":43654545,"uuid":"51118274","full_name":"vercel/test-listen","owner":"vercel","description":"Quick ephemeral URLs for your tests","archived":false,"fork":false,"pushed_at":"2023-07-20T00:53:01.000Z","size":595,"stargazers_count":156,"open_issues_count":13,"forks_count":19,"subscribers_count":59,"default_branch":"main","last_synced_at":"2025-06-02T00:26:09.735Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://npmjs.com/test-listen","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vercel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-02-05T01:26:02.000Z","updated_at":"2024-12-11T17:10:05.000Z","dependencies_parsed_at":"2024-01-23T22:01:14.860Z","dependency_job_id":"284e3fa6-014b-4b01-a18e-156a6763c063","html_url":"https://github.com/vercel/test-listen","commit_stats":{"total_commits":43,"total_committers":13,"mean_commits":"3.3076923076923075","dds":0.6976744186046512,"last_synced_commit":"106da7df61b1287be9b03be65e41ced2686e1b29"},"previous_names":["zeit/test-listen"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/vercel/test-listen","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vercel%2Ftest-listen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vercel%2Ftest-listen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vercel%2Ftest-listen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vercel%2Ftest-listen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vercel","download_url":"https://codeload.github.com/vercel/test-listen/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vercel%2Ftest-listen/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261582835,"owners_count":23180635,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T05:00:37.472Z","updated_at":"2025-06-24T00:32:52.072Z","avatar_url":"https://github.com/vercel.png","language":"JavaScript","readme":"\u003e **Warning**\n\u003e `test-listen` is deprecated. Please use [`async-listen`](https://github.com/vercel/async-listen) instead.\n\n# test-listen\n\nURLs with ephemeral ports. `async`/`await` ready.\n\n## Usage\n\nInstall it:\n\n```\nnpm install --save-dev test-listen\n```\n\nPass a `http.Server` to `test-listen` and it will return an URL in the format `http://localhost:{port}`.\n\nThe second parameter can optionally be a hostname to return in the URL\ninstead of `localhost`.\n\nUseful for running HTTP server testsuites:\n\n```js\nconst http = require('http')\nconst listen = require('test-listen')\n\nconst srv = http.createServer((req, res) =\u003e res.end('1'))\nconst srv2 = http.createServer((req, res) =\u003e res.end('2'))\n\ntest('urls', async t =\u003e {\n  let url = await listen(srv)\n  t.ok(url == 'http://localhost:11401')\n  let url = await listen(srv2)\n  t.ok(url == 'http://localhost:42333')\n})\n```\n\nIt also works with Express:\n\n```js\nconst http = require('http')\nconst express = require('express')\nconst listen = require('test-listen')\n\nconst srv = express()\n\ntest('urls', async t =\u003e {\n  let url = await listen(http.createServer(srv))\n  t.ok(url == 'http://localhost:11401')\n})\n```\n\nOr Koa:\n\n```js\nconst http = require('http')\nconst Koa = require('koa')\nconst listen = require('test-listen')\n\nconst srv = new Koa();\n\ntest('urls', async t =\u003e {\n  let url = await listen(http.createServer(srv.callback()))\n  t.ok(url == 'http://localhost:11401')\n})\n```\n\n## Authors\n\n- Guillermo Rauch ([@rauchg](https://twitter.com/rauchg)) - [Vercel](https://vercel.com)\n- Leo Lamprecht ([@notquiteleo](https://twitter.com/notquiteleo)) - [Vercel](https://vercel.com)\n","funding_links":[],"categories":["JavaScript","Node.js"],"sub_categories":["Test"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvercel%2Ftest-listen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvercel%2Ftest-listen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvercel%2Ftest-listen/lists"}