diff options
author | 2021-04-19 14:41:06 -0400 | |
---|---|---|
committer | 2021-04-19 14:41:06 -0400 | |
commit | eb984559a89b4f0b09c42604a18f1198c8d7ecca (patch) | |
tree | 5bcf0ea7c136733aa39c6dffc3d9b31d77dde719 /test/astro-dynamic.test.js | |
parent | 188541260acad5ccd6699f0a21d6da600860e74c (diff) | |
download | astro-eb984559a89b4f0b09c42604a18f1198c8d7ecca.tar.gz astro-eb984559a89b4f0b09c42604a18f1198c8d7ecca.tar.zst astro-eb984559a89b4f0b09c42604a18f1198c8d7ecca.zip |
Fix dynamic React components (#111)
Another change in snowpack@3 caused this bug. It's not actually a bug in snowpack. Previously snowpack was keeping its list of installed packages in a global cache. In 3.3 it stopped doing so. We were accidentally relying on that global cache to be able to resolve dynamic components.
This fixes it so that we use the frontend snowpack instance to resolve dynamic components. Doing so means they are available when we try to load them.
Diffstat (limited to 'test/astro-dynamic.test.js')
-rw-r--r-- | test/astro-dynamic.test.js | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/test/astro-dynamic.test.js b/test/astro-dynamic.test.js new file mode 100644 index 000000000..41235b6ce --- /dev/null +++ b/test/astro-dynamic.test.js @@ -0,0 +1,30 @@ +import { suite } from 'uvu'; +import * as assert from 'uvu/assert'; +import { doc } from './test-utils.js'; +import { setup } from './helpers.js'; + +const DynamicComponents = suite('Dynamic components tests'); + +setup(DynamicComponents, './fixtures/astro-dynamic'); + +DynamicComponents('Loads client-only packages', async ({ runtime }) => { + let result = await runtime.load('/'); + + assert.equal(result.statusCode, 200); + + // Grab the react-dom import + const exp = /import\("(.+?)"\)/g; + let match, reactDomURL; + while(match = exp.exec(result.contents)) { + if(match[1].includes('react-dom')) { + reactDomURL = match[1]; + } + } + + assert.ok(reactDomURL, 'React dom is on the page'); + + result = await runtime.load(reactDomURL); + assert.equal(result.statusCode, 200, 'Can load react-dom'); +}); + +DynamicComponents.run(); |