d9084ff4ad
* Implement fallback capability This makes it possible for a dynamic component to render fallback content on the server. The mechanism is a special `static` prop passed to the component. If `static` is true then the component knows it can render static content. Putting aside the word `static`, is this the right approach? I think giving components the flexibility to make the decision themselves *is* the right approach. However in this case we have a special property that is passed in non-explicitly. I think we have to do it this way because if the caller passes in a prop it will get serialized and appear on the client. By making this something we *add* during rendering, it only happens on the server (and only when using `:load`). Assuming this is the right approach, is `static` the right name for this prop? Other candidates: * `server` That's all I have! * Use `import.meta.env.astro` to tell if running in SSR mode. * Run formatter
19 lines
497 B
JavaScript
19 lines
497 B
JavaScript
import { suite } from 'uvu';
|
|
import * as assert from 'uvu/assert';
|
|
import { doc } from './test-utils.js';
|
|
import { setup } from './helpers.js';
|
|
|
|
const Fallback = suite('Dynamic component fallback');
|
|
|
|
setup(Fallback, './fixtures/astro-fallback');
|
|
|
|
Fallback('Shows static content', async (context) => {
|
|
const result = await context.runtime.load('/');
|
|
|
|
assert.equal(result.statusCode, 200);
|
|
|
|
const $ = doc(result.contents);
|
|
assert.equal($('#fallback').text(), 'static');
|
|
});
|
|
|
|
Fallback.run();
|