Skip to content

Commit 711c231

Browse files
committed
feat: primer v37 upgrade
Signed-off-by: Adam Setch <[email protected]>
1 parent 250d593 commit 711c231

File tree

2 files changed

+21
-37
lines changed

2 files changed

+21
-37
lines changed

src/renderer/__helpers__/jest.setup.ts

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,10 @@ process.env.OAUTH_CLIENT_ID = 'FAKE_CLIENT_ID_123';
4444
process.env.OAUTH_CLIENT_SECRET = 'FAKE_CLIENT_SECRET_123';
4545

4646
/**
47-
* Primer (@primer/react) Setup
47+
* Primer (@primer/react) Setup - START
4848
*
4949
* Borrowed from https://github.com/primer/react/blob/main/packages/react/src/utils/test-helpers.tsx
5050
*/
51-
// @ts-expect-error: prevent ReferenceError: TextEncoder is not defined
52-
global.TextEncoder = TextEncoder;
5351

5452
// JSDOM doesn't mock ResizeObserver
5553
global.ResizeObserver = jest.fn().mockImplementation(() => {
@@ -68,18 +66,22 @@ global.CSS = {
6866
}),
6967
};
7068

69+
// @ts-expect-error: prevent ReferenceError: TextEncoder is not defined
70+
global.TextEncoder = TextEncoder;
71+
72+
/**
73+
* Primer (@primer/react) Setup - END
74+
*/
75+
7176
window.HTMLMediaElement.prototype.play = jest.fn();
7277

73-
// JSDOM doesn't implement matchMedia; needed for Primer media queries (useMedia hook)
74-
if (!window.matchMedia) {
75-
window.matchMedia = (query: string): MediaQueryList => ({
76-
matches: false,
77-
media: query,
78-
onchange: null,
79-
addListener: () => {}, // deprecated
80-
removeListener: () => {}, // deprecated
81-
addEventListener: () => {},
82-
removeEventListener: () => {},
83-
dispatchEvent: () => false,
84-
});
85-
}
78+
window.matchMedia = (query: string): MediaQueryList => ({
79+
matches: false,
80+
media: query,
81+
onchange: null,
82+
addListener: () => {}, // deprecated
83+
removeListener: () => {}, // deprecated
84+
addEventListener: () => {},
85+
removeEventListener: () => {},
86+
dispatchEvent: () => false,
87+
});

src/renderer/routes/Accounts.test.tsx

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,6 @@ import userEvent from '@testing-library/user-event';
33

44
import { BaseStyles, ThemeProvider } from '@primer/react';
55

6-
// Polyfills for DOM APIs used by Primer components that jsdom doesn't implement
7-
// Minimal no-op implementations if jsdom environment lacks them
8-
const g = global as unknown as Record<string, unknown>;
9-
if (typeof g.ResizeObserver === 'undefined') {
10-
g.ResizeObserver = class {
11-
observe() {}
12-
unobserve() {}
13-
disconnect() {}
14-
};
15-
}
16-
if (typeof g.IntersectionObserver === 'undefined') {
17-
g.IntersectionObserver = class {
18-
observe() {}
19-
unobserve() {}
20-
disconnect() {}
21-
takeRecords() {
22-
return [];
23-
}
24-
};
25-
}
26-
276
import {
287
mockAuth,
298
mockGitHubAppAccount,
@@ -38,6 +17,8 @@ import * as links from '../utils/links';
3817
import * as storage from '../utils/storage';
3918
import { AccountsRoute } from './Accounts';
4019

20+
// import { setupMatchMedia } from '../__helpers__/jest.setup';
21+
4122
const mockNavigate = jest.fn();
4223
jest.mock('react-router-dom', () => ({
4324
...jest.requireActual('react-router-dom'),
@@ -47,6 +28,7 @@ jest.mock('react-router-dom', () => ({
4728
describe('renderer/routes/Accounts.tsx', () => {
4829
afterEach(() => {
4930
jest.clearAllMocks();
31+
// setupMatchMedia()
5032
});
5133

5234
describe('General', () => {

0 commit comments

Comments
 (0)