diff options
author | 2022-06-30 14:09:09 -0400 | |
---|---|---|
committer | 2022-06-30 13:09:09 -0500 | |
commit | 032ad1c047a62dd663067cc562537d16f2872aa7 (patch) | |
tree | edc4803ad3b9a9418f064dbaf54e40903f585dbd /packages/integrations/mdx/test/mdx-component.test.js | |
parent | 91635f05df207d33ee8b50a2afe970b94b24ba7b (diff) | |
download | astro-032ad1c047a62dd663067cc562537d16f2872aa7.tar.gz astro-032ad1c047a62dd663067cc562537d16f2872aa7.tar.zst astro-032ad1c047a62dd663067cc562537d16f2872aa7.zip |
MDX support (#3706)
* feat: first pass at MDX support
* fix: move built-in JSX renderer to come first
* chore: remove jsx example
* chore: update lockfile
* chore: cleanup example
* fix: missing deps
* refactor: move component render logic to `renderPage`
* chore: update HMR script
* chore: update MDX example
* refactor: prefer unshit
* refactor: remove TODO comment
* fix: remove duplicate identifier
* refactor: cleanup mdx entrypoint
* fix: better html handling
* fix: add tsconfig to mdx package
* chore: update lockfile
* fix: do not sort plugins unless mdx is enabled
* chore: update compiler
* fix(hmr): maybe render head for non-Astro pages
* fix: set initial pageExtensions
* refactor: cleanup addPageExtension
* refactor: remove addPageExtensions from types
* refactor: expose HookParameters type
* fix: only default to astro for MDX
* test: pick up jsx support in test fixtures
* refactor: simplify mdx entrypoint
* test: add basic MDX tests
* test(e2e): add mdx + framework tests
* chore: update lockfile
* test(e2e): fix preact mdx e2e test
* fix(mdx): disable .md support
* test(e2e): fix vue-component test missing mdx
* test(e2e): fix solid component needing import
* fix: allow `client:only="solid"` as an alias to `solid-js`
* chore: move to with-mdx example
* chore: update MDX readme
* chore: update example readme
* chore: bump astro version
* chore: update lockfile
* Update mod.d.ts
* feat: support `export const components` in MDX pages
* chore: update mdx example
* fix: update jsx-runtime with better slot support
* refactor: remove object style support
* chore: cleanup package exports
* chore: add todo comment
* refactor: improve isPage function, move to utils
* refactor: dry up manual HMR updates
* chore: add dev tests for MDX
* chore: prefer set to array
* chore: add changesets
* fix(hmr): flip public/private route
Co-authored-by: Nate Moore <nate@astro.build>
Diffstat (limited to 'packages/integrations/mdx/test/mdx-component.test.js')
-rw-r--r-- | packages/integrations/mdx/test/mdx-component.test.js | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/packages/integrations/mdx/test/mdx-component.test.js b/packages/integrations/mdx/test/mdx-component.test.js new file mode 100644 index 000000000..462e86e7b --- /dev/null +++ b/packages/integrations/mdx/test/mdx-component.test.js @@ -0,0 +1,63 @@ +import mdx from '@astrojs/mdx'; + +import { expect } from 'chai'; +import { parseHTML } from 'linkedom' +import { loadFixture } from '../../../astro/test/test-utils.js'; + +describe('MDX Component', () => { + let fixture; + + before(async () => { + fixture = await loadFixture({ + root: new URL('./fixtures/mdx-component/', import.meta.url), + integrations: [ + mdx() + ] + }); + }); + + describe('build', () => { + before(async () => { + await fixture.build(); + }); + + + it('works', async () => { + const html = await fixture.readFile('/index.html'); + const { document } = parseHTML(html); + + const h1 = document.querySelector('h1'); + const foo = document.querySelector('#foo'); + + expect(h1.textContent).to.equal('Hello component!'); + expect(foo.textContent).to.equal('bar'); + }); + }) + + describe('dev', () => { + let devServer; + + before(async () => { + devServer = await fixture.startDevServer(); + }); + + after(async () => { + await devServer.stop(); + }); + + it('works', async () => { + const res = await fixture.fetch('/'); + + expect(res.status).to.equal(200); + + const html = await res.text(); + const { document } = parseHTML(html); + + const h1 = document.querySelector('h1'); + const foo = document.querySelector('#foo'); + + expect(h1.textContent).to.equal('Hello component!'); + expect(foo.textContent).to.equal('bar'); + }); + }) +}) |