@solidnative/testing
v0.1.3
Published
Test solidnative Solid components in Node with no simulator: a fake Fabric, Testing Library queries and events, and node:test and Vitest integration.
Maintainers
Readme
@solidnative/testing
Runs an solidnative Solid component test in plain Node, in milliseconds, with no simulator and no
device: Testing Library's render() and screen, and React Native Testing Library's fireEvent
and userEvent, over a fake of the native side.
Alpha: APIs may change before 1.0.
Install
Most apps start from npx create-expo-app@latest my-app --template @solidnative/template, which
already has this set up. Otherwise:
npm install --save-dev @solidnative/testingExample
// package.json
{
"scripts": { "test": "node --import @solidnative/testing/register --test \"src/**/*.test.ts\"" }
}// app.test.ts
import assert from 'node:assert/strict';
import { afterEach, test } from 'node:test';
import { cleanup, render, screen, userEvent } from '@solidnative/testing';
import { App } from './app.solid.tsx';
afterEach(cleanup);
test('counts taps', async () => {
render(App);
await userEvent.press(screen.getByRole('button'));
assert.ok(screen.getByText('Tapped 1 times'));
});The root, renderer, styling engine, responder system, and every component under test are the real
ones - only nativeFabricUIManager is faked, so a query reads what native would actually have been
sent.
What's in the package
.-render(Component, { props, platform, engineOptions, clock }),renderWith(boot)for an app's own entry,screen,within,fireEvent,userEvent,waitFor,gestureOf,settle,cleanup(),createFakeFabric()andcreateClock()../register- a Node module hook fornode --import @solidnative/testing/register --test: Solid TSX and.native.csscompiled as Metro compiles them,solid-js's client build, asset requires as{ testUri }, and stand-ins for the native gesture and animation libraries../vitest-solidNative(), the same as a Vite plugin, for projects that would rather use Vitest.
Docs
License
MIT
