Skip to content

Commit 4be9fbd

Browse files
authored
chore(ipv6): only run ipv6 e2e test in ipv6 environment (#1207)
1 parent 0934d02 commit 4be9fbd

2 files changed

Lines changed: 22 additions & 2 deletions

File tree

test/e2e/ipv6.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import { getLocal } from 'mockttp';
33
import request from 'supertest';
44
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
55

6-
import { createApp, createProxyMiddleware } from './test-kit.js';
6+
import { createApp, createProxyMiddleware, isIPv6Available } from './test-kit.js';
77

8-
describe('ipv6 integration', () => {
8+
describe.runIf(await isIPv6Available())('ipv6 integration', () => {
99
let targetServer: Mockttp;
1010

1111
beforeEach(async () => {

test/e2e/test-kit.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { createServer } from 'node:net';
2+
13
import express, { type Express, type RequestHandler } from 'express';
24

35
export {
@@ -18,3 +20,21 @@ export function createAppWithPath(path: string | string[], middleware: RequestHa
1820
app.use(path, middleware);
1921
return app;
2022
}
23+
24+
/**
25+
* Detects if the current environment supports IPv6
26+
* Used to conditionally run tests that require IPv6 support
27+
*/
28+
export async function isIPv6Available(): Promise<boolean> {
29+
return new Promise((resolve) => {
30+
const server = createServer();
31+
32+
const done = (result: boolean) => {
33+
server.removeAllListeners('error');
34+
server.close(() => resolve(result));
35+
};
36+
37+
server.once('error', () => done(false));
38+
server.listen(0, '::1', () => done(true));
39+
});
40+
}

0 commit comments

Comments
 (0)