All files / core/blong-kukum/test/fixture/e2e-realm browser-test.ts

0% Statements 0/88
0% Branches 0/1
0% Functions 0/1
0% Lines 0/88

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89                                                                                                                                                                                 
import unchanged from '@feasibleone/blong';
import {browser, realm} from '@feasibleone/blong';

/**
 * browser-test.ts — Browser platform suite for `e2e` tap tests.
 *
 * Loads the browser-side realms needed by the tap test flows (blong-test for
 * HTTP dispatch, blong-login for authentication helpers, blong-access for the
 * RBAC realm) plus a **test-only** `e2e` browser realm that discovers only
 * the `browser/test/` layer. The React `browser/orchestrator` layer is disabled
 * via config so the tap/ts-node runner does not try to load JSX.
 *
 * The browser-side `test.widget.flow` test calls the `e2e` API over HTTP
 * through the backend adapter, exercising the gateway RBAC (401/403/200).
 */
export default browser(blong => ({
    url: import.meta.url,
    validation: blong.type.Object(
        {
            login: blong.type.Object({}),
            access: blong.type.Object({}),
            e2e: blong.type.Object({}),
            testClient: blong.type.Object({
                backend: blong.type.Object({
                    namespace: blong.type.Array(blong.type.String()),
                }),
            }),
        },
        {additionalProperties: false},
    ),
    children: [
        /** blong-test: provides test dispatch + backend HTTP adapter */
        async function testClient() {
            return import('@feasibleone/blong-test/browser.ts');
        },
        /** blong-login: browser-side authentication helpers */
        async function login() {
            return import('@feasibleone/blong-login/browser.ts');
        },
        /** blong-access: RBAC realm (login/authorization) */
        async function access() {
            return import('@feasibleone/blong-access/browser.ts');
        },
        /**
         * Test-only `e2e` browser realm — discovers only the browser/test
         * layer (no React orchestrator components, which the tap runner cannot
         * load).
         */
        async function e2e() {
            return realm(() => ({
                url: import.meta.url,
                children: ['./browser/test'],
                config: {
                    default: {
                        'browser/orchestrator': false,
                    },
                    integration: {
                        'browser/orchestrator': false,
                    },
                },
            }));
        },
    ],
    config: {
        default: {},
        dev: {
            login: {},
            access: {},
            e2e: {},
        },
        integration: {
            testClient: {
                backend: {
                    // Namespaces the browser backend adapter proxies to the server
                    namespace: ['e2e', 'login', 'access'],
                },
            },
            login: {},
            access: {},
            e2e: {},
            // Disable the React browser layers for this tap run.
            'browser/orchestrator': false,
            watch: {
                test: ['test.widget.flow', 'test.gadget.flow'],
            },
        },
    },
}));