Skip to content

Commit e4e4967

Browse files
committed
chore: upgrade testing library and migrate render-html tests
1 parent 17c142f commit e4e4967

23 files changed

Lines changed: 738 additions & 2116 deletions

.yarn/patches/react-native-accessibility-engine-npm-3.2.0-5709303461.patch

Lines changed: 156 additions & 0 deletions
Large diffs are not rendered by default.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
"eslint-plugin-react-hooks": "^4.2.0",
5151
"eslint-plugin-react-native": "^3.10.0",
5252
"husky": "^6.0.0",
53-
"jest": "^26.6.3",
53+
"jest": "^29.6.3",
5454
"prettier": "^2.2.1",
5555
"typescript": "~4.2.4"
5656
},

packages/css-processor/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@
4242
"@babel/runtime": "^7.25.0",
4343
"@react-native-community/bob": "^0.17.1",
4444
"@release-it/conventional-changelog": "^2.0.1",
45-
"@types/jest": "^26.0.23",
45+
"@types/jest": "^29.5.13",
4646
"@types/react": "19.1.1",
4747
"babel-jest": "^26.6.3",
4848
"eslint": "^7.25.0",
49-
"jest": "^26.6.3",
49+
"jest": "^29.6.3",
5050
"metro-react-native-babel-preset": "^0.66.0",
5151
"param-case": "^3.0.4",
5252
"prettier": "^2.2.1",
Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
module.exports = {
2-
...require('../../jest-config-base'),
2+
preset: 'react-native',
3+
moduleFileExtensions: ['ts', 'tsx', 'js', 'json', 'node'],
4+
testRegex: 'src/.*\\.test\\.tsx?$',
5+
coveragePathIgnorePatterns: ['/node_modules/', '__tests__'],
6+
transformIgnorePatterns: [
7+
'node_modules/(?!(react-native|react-native-webview|ramda|react-native-render-html|@react-native)/)'
8+
],
39
setupFiles: ['<rootDir>/jest/setup.ts'],
410
setupFilesAfterEnv: ['<rootDir>/jest/setupAfterEnv.ts']
511
};
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
import '@testing-library/jest-native';
2-
import '@testing-library/jest-native/extend-expect';
1+
import '@testing-library/jest-native/legacy-extend-expect';
2+
import 'react-native-accessibility-engine';

packages/render-html/package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,19 +48,19 @@
4848
"@microsoft/api-extractor": "^7.14.0",
4949
"@react-native/babel-preset": "^0.82.0",
5050
"@release-it/conventional-changelog": "^2.0.1",
51-
"@testing-library/jest-native": "^4.0.2",
51+
"@testing-library/jest-native": "^5.4.3",
5252
"@testing-library/react-hooks": "^7.0.0",
53-
"@testing-library/react-native": "^7.2.0",
54-
"@types/jest": "^26.0.23",
55-
"@types/react-test-renderer": "^17.0.1",
53+
"@testing-library/react-native": "^13.3.3",
54+
"@types/jest": "^29.5.13",
55+
"@types/react-test-renderer": "^19.1.0",
5656
"babel-jest": "^27.0.2",
5757
"eslint": "^7.29.0",
5858
"htmlparser2": "^7.1.2",
59-
"jest": "^27.0.4",
59+
"jest": "^29.6.3",
6060
"prettier": "^2.3.1",
6161
"react": "19.1.1",
6262
"react-native": "^0.82.0",
63-
"react-native-accessibility-engine": "^0.4.1",
63+
"react-native-accessibility-engine": "patch:react-native-accessibility-engine@npm%3A3.2.0#~/.yarn/patches/react-native-accessibility-engine-npm-3.2.0-5709303461.patch",
6464
"react-native-builder-bob": "^0.18.1",
6565
"react-performance-testing": "^1.2.3",
6666
"react-test-renderer": "19.1.1",

packages/render-html/src/__tests__/__snapshots__/component.render-html.test.tsx.snap

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

33
exports[`RenderHTML regarding customHTMLElementsModels prop should support changing block content model to mixed 1`] = `
4-
"<TDocument tagName=\\"html\\">
5-
<TBlock tagName=\\"body\\">
4+
"<TDocument tagName="html">
5+
<TBlock tagName="body">
66
<TPhrasing anonymous>
7-
<TPhrasing tagName=\\"span\\">
8-
<TText tagName=\\"article\\" data=\\"\\" />
9-
<TText anonymous data=\\"Text\\" />
7+
<TPhrasing tagName="span">
8+
<TText tagName="article" data="" />
9+
<TText anonymous data="Text" />
1010
</TPhrasing>
1111
</TPhrasing>
1212
</TBlock>

packages/render-html/src/__tests__/component.render-html-a11y.test.tsx

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import {
55
TBlock
66
} from '@native-html/transient-render-engine';
77
import { render } from '@testing-library/react-native';
8-
import AccessibilityEngine from 'react-native-accessibility-engine';
98
import RenderHTML from '../RenderHTML';
109
import { CustomRendererProps } from '../shared-types';
1110

@@ -14,9 +13,9 @@ describe('RenderHTML a11y', () => {
1413
describe('should add accessibility features to anchors when href is non-empty', () => {
1514
const snippets = [
1615
// Block
17-
`<a href="https://domain.com">test</a>`,
16+
'<a href="https://domain.com">test</a>',
1817
// Inline
19-
`<span><a href="https://domain.com">test</a> other text</span>`
18+
'<span><a href="https://domain.com">test</a> other text</span>'
2019
];
2120
for (const snippet of snippets) {
2221
it(`should pas snippet "${snippet}"`, () => {
@@ -33,15 +32,15 @@ describe('RenderHTML a11y', () => {
3332
const anchor = getByTestId('a');
3433
expect(anchor).toHaveProp('accessibilityRole', 'link');
3534
expect(anchor).toHaveProp('accessible', true);
36-
expect(() => AccessibilityEngine.check(element)).not.toThrow();
35+
expect(element).toBeAccessible();
3736
});
3837
}
3938
});
4039
it('should not add accessibility features to anchors when href is empty', () => {
4140
const element = (
4241
<RenderHTML
4342
source={{
44-
html: `<a href="">test</a>`
43+
html: '<a href="">test</a>'
4544
}}
4645
debug={false}
4746
contentWidth={0}
@@ -51,7 +50,7 @@ describe('RenderHTML a11y', () => {
5150
const anchor = getByTestId('a');
5251
expect(anchor).not.toHaveProp('accessibilityRole');
5352
expect(anchor).not.toHaveProp('accessible');
54-
expect(() => AccessibilityEngine.check(element)).not.toThrow();
53+
expect(element).toBeAccessible();
5554
});
5655
});
5756
describe('regarding headings', () => {
@@ -68,7 +67,7 @@ describe('RenderHTML a11y', () => {
6867
);
6968
const { getByTestId } = render(element);
7069
expect(getByTestId(header)).toHaveProp('accessibilityRole', 'header');
71-
expect(() => AccessibilityEngine.check(element)).not.toThrow();
70+
expect(element).toBeAccessible();
7271
}
7372
});
7473
});
@@ -83,9 +82,9 @@ describe('RenderHTML a11y', () => {
8382
contentWidth={200}
8483
/>
8584
);
86-
const { getByA11yRole, findByTestId } = render(element);
85+
const { getByTestId, findByTestId } = render(element);
8786
await findByTestId('image-success');
88-
const image = getByA11yRole('image');
87+
const image = getByTestId('img');
8988
expect(image).toHaveProp('accessibilityRole', 'image');
9089
expect(image).toHaveProp('accessibilityLabel', 'An image');
9190

@@ -143,10 +142,10 @@ describe('RenderHTML a11y', () => {
143142
contentWidth={200}
144143
/>
145144
);
146-
const { getByA11yRole } = render(element);
147-
const button = getByA11yRole('button');
145+
const { getByRole } = render(element);
146+
const button = getByRole('button');
148147
expect(button).toHaveProp('accessibilityRole', 'button');
149-
expect(() => AccessibilityEngine.check(element)).not.toThrow();
148+
expect(element).toBeAccessible();
150149
});
151150
it('should add a button role if onPress is defined for custom renderers with a textual content model', () => {
152151
const element = (
@@ -170,10 +169,10 @@ describe('RenderHTML a11y', () => {
170169
contentWidth={200}
171170
/>
172171
);
173-
const { getByA11yRole } = render(element);
174-
const button = getByA11yRole('link');
172+
const { getByRole } = render(element);
173+
const button = getByRole('link');
175174
expect(button).toHaveProp('accessibilityRole', 'link');
176-
expect(() => AccessibilityEngine.check(element)).not.toThrow();
175+
expect(element).toBeAccessible();
177176
});
178177
});
179178
});

packages/render-html/src/__tests__/component.render-html.test.tsx

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,22 +72,25 @@ describe('RenderHTML', () => {
7272
contentWidth={contentWidth}
7373
/>
7474
);
75-
expect(UNSAFE_getByType(ImgTag)).toHaveProp('contentWidth', contentWidth);
75+
expect(UNSAFE_getByType(ImgTag)).legacy_toHaveProp(
76+
'contentWidth',
77+
contentWidth
78+
);
7679
update(
7780
<RenderHTML
7881
source={{ html: '<img src="https://img.com/1" />' }}
7982
debug={false}
8083
contentWidth={nextContentWidth}
8184
/>
8285
);
83-
expect(UNSAFE_getByType(ImgTag)).toHaveProp(
86+
expect(UNSAFE_getByType(ImgTag)).legacy_toHaveProp(
8487
'contentWidth',
8588
nextContentWidth
8689
);
8790
});
8891

8992
it('should merge `viewStyle` to <img> renderer', () => {
90-
const { getByA11yRole } = render(
93+
const { getByTestId } = render(
9194
<RenderHTML
9295
source={{
9396
html: '<img alt="An image" src="https://img.com/1" />'
@@ -101,7 +104,7 @@ describe('RenderHTML', () => {
101104
contentWidth={200}
102105
/>
103106
);
104-
expect(getByA11yRole('image')).toHaveStyle({
107+
expect(getByTestId('img')).toHaveStyle({
105108
backgroundColor: 'red'
106109
});
107110
});
@@ -887,7 +890,7 @@ describe('RenderHTML', () => {
887890
enableExperimentalBRCollapsing
888891
/>
889892
);
890-
expect(queryByText('\n')).toBeNull();
893+
expect(queryByText('\n', { normalizer: (s) => s })).toBeNull();
891894
});
892895
});
893896
});

packages/render-html/src/__tests__/regression.118.white-space-handling.test.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react';
22
import RenderHTML from '../RenderHTML';
3-
import renderer from 'react-test-renderer';
3+
import { render } from '@testing-library/react-native';
44
import { extractTextFromInstance } from './utils';
55

66
beforeAll(() => {
@@ -12,7 +12,7 @@ beforeAll(() => {
1212
*/
1313
describe('RenderHTML component', () => {
1414
it('should pass regression #118 regarding handling of CSS white-space', () => {
15-
const testRenderer = renderer.create(
15+
const testRenderer = render(
1616
<RenderHTML
1717
debug={false}
1818
source={{ html: ' <div> foo\n\nbar baz </div>' }}

0 commit comments

Comments
 (0)