Skip to content

Commit fb3f12a

Browse files
Merge pull request #1191 from chromaui/CAP-3243
Get build progress updates through Chromatic notify service
2 parents 9e3c422 + 4ed1802 commit fb3f12a

File tree

8 files changed

+1077
-60
lines changed

8 files changed

+1077
-60
lines changed

node-src/lib/getEnvironment.test.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { describe, expect, it, vi } from 'vitest';
2+
3+
describe('CHROMATIC_NOTIFY_SERVICE_URL', () => {
4+
it('returns production url by default', async () => {
5+
const { default: getEnvironment } = await import('./getEnvironment');
6+
expect(getEnvironment().CHROMATIC_NOTIFY_SERVICE_URL).toBe('wss://notify.chromatic.com');
7+
});
8+
9+
it('returns dev url if index url is dev', async () => {
10+
vi.stubEnv('CHROMATIC_INDEX_URL', 'https://index.dev-chromatic.com');
11+
vi.resetModules();
12+
13+
const { default: getEnvironment } = await import('./getEnvironment');
14+
expect(getEnvironment().CHROMATIC_NOTIFY_SERVICE_URL).toBe('wss://notify.dev-chromatic.com');
15+
});
16+
17+
it('returns staging url if index url is staging', async () => {
18+
vi.stubEnv('CHROMATIC_INDEX_URL', 'https://index.staging-chromatic.com');
19+
vi.resetModules();
20+
21+
const { default: getEnvironment } = await import('./getEnvironment');
22+
expect(getEnvironment().CHROMATIC_NOTIFY_SERVICE_URL).toBe(
23+
'wss://notify.staging-chromatic.com'
24+
);
25+
});
26+
27+
it('returns the configured CHROMATIC_NOTIFY_SERVICE_URL if it is set', async () => {
28+
vi.stubEnv('CHROMATIC_NOTIFY_SERVICE_URL', 'wss://notify.other-chromatic.com');
29+
vi.resetModules();
30+
31+
const { default: getEnvironment } = await import('./getEnvironment');
32+
expect(getEnvironment().CHROMATIC_NOTIFY_SERVICE_URL).toBe('wss://notify.other-chromatic.com');
33+
});
34+
});

node-src/lib/getEnvironment.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ export interface Environment {
33
CHROMATIC_DNS_SERVERS: string[];
44
CHROMATIC_HASH_CONCURRENCY: number;
55
CHROMATIC_INDEX_URL: string;
6+
CHROMATIC_NOTIFY_SERVICE_URL: string;
67
CHROMATIC_OUTPUT_INTERVAL: number;
78
CHROMATIC_POLL_INTERVAL: number;
89
CHROMATIC_PROJECT_TOKEN?: string;
@@ -24,6 +25,7 @@ const {
2425
CHROMATIC_DNS_SERVERS = '',
2526
CHROMATIC_HASH_CONCURRENCY = '48',
2627
CHROMATIC_INDEX_URL = 'https://index.chromatic.com',
28+
CHROMATIC_NOTIFY_SERVICE_URL,
2729
CHROMATIC_OUTPUT_INTERVAL = String(10 * 1000),
2830
CHROMATIC_POLL_INTERVAL = String(1000),
2931
CHROMATIC_PROJECT_TOKEN,
@@ -60,6 +62,8 @@ export default function getEnvironment(): Environment {
6062
.filter(Boolean),
6163
CHROMATIC_HASH_CONCURRENCY: Number.parseInt(CHROMATIC_HASH_CONCURRENCY, 10),
6264
CHROMATIC_INDEX_URL,
65+
CHROMATIC_NOTIFY_SERVICE_URL:
66+
CHROMATIC_NOTIFY_SERVICE_URL || getNotifyServiceUrl(CHROMATIC_INDEX_URL),
6367
CHROMATIC_OUTPUT_INTERVAL: Number.parseInt(CHROMATIC_OUTPUT_INTERVAL, 10),
6468
CHROMATIC_POLL_INTERVAL: Number.parseInt(CHROMATIC_POLL_INTERVAL, 10),
6569
CHROMATIC_PROJECT_TOKEN,
@@ -76,3 +80,15 @@ export default function getEnvironment(): Environment {
7680
STORYBOOK_NODE_ENV,
7781
};
7882
}
83+
84+
function getNotifyServiceUrl(indexUrl: string) {
85+
if (indexUrl.includes('dev')) {
86+
return 'wss://notify.dev-chromatic.com';
87+
}
88+
89+
if (indexUrl.includes('staging')) {
90+
return 'wss://notify.staging-chromatic.com';
91+
}
92+
93+
return 'wss://notify.chromatic.com';
94+
}

0 commit comments

Comments
 (0)