xref: /expo/apps/test-suite/tests/HTML.js (revision 999ead72)
155058f92SEvan Baconimport {
255058f92SEvan Bacon  A,
355058f92SEvan Bacon  Article,
455058f92SEvan Bacon  B,
555058f92SEvan Bacon  BlockQuote,
655058f92SEvan Bacon  BR,
755058f92SEvan Bacon  Caption,
855058f92SEvan Bacon  Code,
955058f92SEvan Bacon  Del,
1055058f92SEvan Bacon  EM,
1155058f92SEvan Bacon  Footer,
1255058f92SEvan Bacon  H1,
1355058f92SEvan Bacon  H2,
1455058f92SEvan Bacon  H3,
1555058f92SEvan Bacon  H4,
1655058f92SEvan Bacon  H5,
1755058f92SEvan Bacon  H6,
1855058f92SEvan Bacon  Header,
1955058f92SEvan Bacon  HR,
2055058f92SEvan Bacon  I,
2155058f92SEvan Bacon  LI,
2255058f92SEvan Bacon  Main,
2355058f92SEvan Bacon  Mark,
2455058f92SEvan Bacon  Nav,
2555058f92SEvan Bacon  P,
2655058f92SEvan Bacon  Pre,
2755058f92SEvan Bacon  Q,
2855058f92SEvan Bacon  S,
2955058f92SEvan Bacon  Section,
3055058f92SEvan Bacon  Strong,
3155058f92SEvan Bacon  Table,
3255058f92SEvan Bacon  TBody,
3355058f92SEvan Bacon  TD,
3455058f92SEvan Bacon  TFoot,
3555058f92SEvan Bacon  TH,
3655058f92SEvan Bacon  THead,
3755058f92SEvan Bacon  Time,
3855058f92SEvan Bacon  TR,
3955058f92SEvan Bacon  UL,
4055058f92SEvan Bacon} from '@expo/html-elements';
4155058f92SEvan Baconimport React from 'react';
42*999ead72SEvan Baconimport { View, Text } from 'react-native';
4355058f92SEvan Bacon
4455058f92SEvan Baconimport { mountAndWaitFor as originalMountAndWaitFor } from './helpers';
4555058f92SEvan Bacon
4655058f92SEvan Baconexport const name = 'html-elements';
4755058f92SEvan Bacon
4855058f92SEvan Baconconst textElements = {
4955058f92SEvan Bacon  H1,
5055058f92SEvan Bacon  H2,
5155058f92SEvan Bacon  H3,
5255058f92SEvan Bacon  H4,
5355058f92SEvan Bacon  H5,
5455058f92SEvan Bacon  H6,
5555058f92SEvan Bacon  A,
5655058f92SEvan Bacon  P,
5755058f92SEvan Bacon  B,
5855058f92SEvan Bacon  S,
5955058f92SEvan Bacon  Pre,
6055058f92SEvan Bacon  Del,
6155058f92SEvan Bacon  Strong,
6255058f92SEvan Bacon  I,
6355058f92SEvan Bacon  EM,
6455058f92SEvan Bacon  Mark,
6555058f92SEvan Bacon  Code,
6655058f92SEvan Bacon  LI,
6755058f92SEvan Bacon  Q,
6855058f92SEvan Bacon  Time,
69fc1510b0SEric Samelson  BR,
7055058f92SEvan Bacon};
7155058f92SEvan Bacon
7255058f92SEvan Baconconst viewElements = {
7355058f92SEvan Bacon  Article,
7455058f92SEvan Bacon  Header,
7555058f92SEvan Bacon  Main,
7655058f92SEvan Bacon  Section,
7755058f92SEvan Bacon  Nav,
7855058f92SEvan Bacon  Footer,
7955058f92SEvan Bacon  UL,
8055058f92SEvan Bacon  LI,
8155058f92SEvan Bacon  BlockQuote,
8255058f92SEvan Bacon  Pre,
8355058f92SEvan Bacon};
8455058f92SEvan Bacon
8555058f92SEvan Baconexport async function test(
8655058f92SEvan Bacon  { it, describe, beforeAll, jasmine, afterAll, expect, afterEach, beforeEach },
8755058f92SEvan Bacon  { setPortalChild, cleanupPortal }
8855058f92SEvan Bacon) {
8955058f92SEvan Bacon  afterEach(async () => {
9055058f92SEvan Bacon    await cleanupPortal();
9155058f92SEvan Bacon  });
9255058f92SEvan Bacon
9355058f92SEvan Bacon  const mountAndWaitFor = (child, propName = 'onLayout') =>
9455058f92SEvan Bacon    originalMountAndWaitFor(child, propName, setPortalChild);
9555058f92SEvan Bacon
9655058f92SEvan Bacon  describe(name, () => {
9755058f92SEvan Bacon    describe('Text', () => {
9855058f92SEvan Bacon      for (const elementName of Object.keys(textElements)) {
9955058f92SEvan Bacon        it(`renders text element ${elementName}`, async () => {
10055058f92SEvan Bacon          const Element = textElements[elementName];
10155058f92SEvan Bacon          await mountAndWaitFor(<Element>Test contents</Element>);
10255058f92SEvan Bacon        });
10355058f92SEvan Bacon      }
10455058f92SEvan Bacon    });
10555058f92SEvan Bacon    describe('Views', () => {
10655058f92SEvan Bacon      for (const elementName of Object.keys(viewElements)) {
10755058f92SEvan Bacon        it(`renders view elements ${elementName}`, async () => {
10855058f92SEvan Bacon          const Element = viewElements[elementName];
10955058f92SEvan Bacon          await mountAndWaitFor(
11055058f92SEvan Bacon            <Element>
111*999ead72SEvan Bacon              <Text>Hello</Text>
11255058f92SEvan Bacon            </Element>
11355058f92SEvan Bacon          );
11455058f92SEvan Bacon        });
11555058f92SEvan Bacon      }
11655058f92SEvan Bacon    });
117*999ead72SEvan Bacon
118*999ead72SEvan Bacon    it(`renders a horizontal rule`, async () => {
119*999ead72SEvan Bacon      await mountAndWaitFor(
120*999ead72SEvan Bacon        <View>
121*999ead72SEvan Bacon          <HR />
122*999ead72SEvan Bacon        </View>
123*999ead72SEvan Bacon      );
124*999ead72SEvan Bacon    });
125*999ead72SEvan Bacon    it(`renders a table`, async () => {
126*999ead72SEvan Bacon      await mountAndWaitFor(
127*999ead72SEvan Bacon        <Table>
128*999ead72SEvan Bacon          <Caption>Caption</Caption>
129*999ead72SEvan Bacon          <THead>
130*999ead72SEvan Bacon            <TR>
131*999ead72SEvan Bacon              <TH colSpan={2}>The table header</TH>
132*999ead72SEvan Bacon            </TR>
133*999ead72SEvan Bacon          </THead>
134*999ead72SEvan Bacon          <TBody>
135*999ead72SEvan Bacon            <TR>
136*999ead72SEvan Bacon              <TD>The table body</TD>
137*999ead72SEvan Bacon              <TD>with two columns</TD>
138*999ead72SEvan Bacon            </TR>
139*999ead72SEvan Bacon            <TR>
140*999ead72SEvan Bacon              <TD>Row two</TD>
141*999ead72SEvan Bacon              <TD>Column two</TD>
142*999ead72SEvan Bacon            </TR>
143*999ead72SEvan Bacon          </TBody>
144*999ead72SEvan Bacon          <TFoot>
145*999ead72SEvan Bacon            <TR>
146*999ead72SEvan Bacon              <TH colSpan={2}>The table footer</TH>
147*999ead72SEvan Bacon            </TR>
148*999ead72SEvan Bacon          </TFoot>
149*999ead72SEvan Bacon        </Table>
150*999ead72SEvan Bacon      );
151*999ead72SEvan Bacon    });
152*999ead72SEvan Bacon    it(`renders a table`, async () => {
153*999ead72SEvan Bacon      await mountAndWaitFor(
154*999ead72SEvan Bacon        <Table>
155*999ead72SEvan Bacon          <Caption>Caption</Caption>
156*999ead72SEvan Bacon          <THead>
157*999ead72SEvan Bacon            <TR>
158*999ead72SEvan Bacon              <TH colSpan={2}>The table header</TH>
159*999ead72SEvan Bacon            </TR>
160*999ead72SEvan Bacon          </THead>
161*999ead72SEvan Bacon          <TBody>
162*999ead72SEvan Bacon            <TR>
163*999ead72SEvan Bacon              <TD>The table body</TD>
164*999ead72SEvan Bacon              <TD>with two columns</TD>
165*999ead72SEvan Bacon            </TR>
166*999ead72SEvan Bacon            <TR>
167*999ead72SEvan Bacon              <TD>Row two</TD>
168*999ead72SEvan Bacon              <TD>Column two</TD>
169*999ead72SEvan Bacon            </TR>
170*999ead72SEvan Bacon          </TBody>
171*999ead72SEvan Bacon          <TFoot>
172*999ead72SEvan Bacon            <TR>
173*999ead72SEvan Bacon              <TH colSpan={2}>The table footer</TH>
174*999ead72SEvan Bacon            </TR>
175*999ead72SEvan Bacon          </TFoot>
176*999ead72SEvan Bacon        </Table>
177*999ead72SEvan Bacon      );
178*999ead72SEvan Bacon    });
17955058f92SEvan Bacon  });
18055058f92SEvan Bacon}
181