Skip to content

Releases: carbonmeai/danwo

v0.1.6

Choose a tag to compare

@github-actions github-actions released this 27 Oct 23:04

New

  • danwo in Simplified Chinese. The README has a Chinese version, and the docs have their
    first Chinese pages at /zh-CN/docs: the introduction, the quickstart, why danwo,
    what you can test, the fault matrix and apps in other languages. A page that isn't translated
    yet shows the English one.
  • Every missing package at once. Before any test starts, danwo test and danwo matrix name
    every package your config needs and your project lacks, with one command that adds them all, for
    example npm install -D yjs y-protocols pg. danwo doctor lists them too.
  • A page the browser couldn't load is in the run's app log with the browser's reason, such as
    net::ERR_CONNECTION_RESET.

Fixed

  • A page load that Chromium drops because the machine's network changed, such as when a Docker
    container starts during a test, is loaded again, up to twice. A form's POST is never sent twice.
    The run's app log notes each reload.
  • The dashboard's player no longer jumps back into the previous tab's video after a recording
    switches tabs.
  • The Tiptap emulator's message for a project without Yjs gives just the install command,
    npm install -D yjs y-protocols.

v0.1.5

Choose a tag to compare

@github-actions github-actions released this 25 Oct 00:52

Changed

  • danwo's own proxy. The proxy that routes your app's calls and injects faults is now danwo's
    own code, with no dependencies. A web project installs 54 packages and 71 MB, down from 249
    packages and 123 MB, and npm audit finds nothing. The basic-ftp advisory is gone with it.
  • Yjs only for Tiptap. yjs and y-protocols are optional now, and only the Tiptap emulator
    loads them. An app that uses Tiptap's collaboration has them already; one that doesn't is told
    npm install -D yjs y-protocols. See Tiptap.
  • The proxy prints nothing when a connection drops. Set DANWO_DEBUG=proxy to see each call it
    handles and why one failed.

New

  • HTTP/2 and gRPC. Clients that speak only HTTP/2 now go through danwo's proxy. That covers
    gRPC: Google Cloud's client libraries such as Firestore and Pub/Sub, Temporal, and your own gRPC
    services. Streams flow both ways as they arrive, and trailers such as grpc-status reach your
    app. Plain-text gRPC works too.
  • Browsers and SDKs that offer both HTTP/1.1 and HTTP/2 still get HTTP/1.1, so nothing changes
    for them.
  • A fault on an HTTP/2 call hits that one stream. A reset resets the stream, and the other
    calls on the same connection carry on.
  • An emulator can stream a gRPC call both ways, and send its grpc-status once its stream ends
    with withTrailers.
  • If a real server closes a connection just as a call goes out, the proxy sends the call again on
    a fresh one.
  • gRPC apps in Python, Ruby and PHP trust danwo's CA with no change: danwo sets
    GRPC_DEFAULT_SSL_ROOTS_FILE_PATH. See Apps in other languages.

Fixed

  • Bachs' emulator works with @bachs/sdk 2.0, including listAll() paging through products and
    payments.
  • Flutterwave's fidelity check matches its live bank list again.
  • Bachs' emulator settles a payment even when its timer fires a moment early, so the payment's
    webhook is never lost on a busy machine.
  • A call to an app on a *.localhost name is checked for a listener at the address it's dialled
    at, so it works where no resolver knows the name.
  • danwo's CA can sign only the certificates it serves, never another CA.

v0.1.4

Choose a tag to compare

@github-actions github-actions released this 24 Oct 18:47

Changed

  • A smaller install. @danwo/cli installs 112 MB for a web project instead of 189 MB. The
    mobile driver, the MCP server and the recorder are now optional packages, and the fault matrix no
    longer depends on effect.
  • danwo init adds what you pick. It adds @danwo/mobile for a mobile project, and
    @danwo/mcp with @danwo/recorder when it sets up coding agents. Install them at the same
    version as @danwo/cli, and upgrade them together. See Quickstart.

New

  • A command that needs an optional package you haven't installed stops with PACKAGE_MISSING
    (exit 2) and the exact install command, e.g.
    danwo build-ios needs @danwo/mobile: npm install -D @danwo/mobile@0.1.4.
  • danwo doctor lists the optional packages: which are installed, what each enables, and the
    install command for any your project needs. It warns when one is at another version than the CLI.

Fixed

  • A config that imports @danwo/mobile without it installed says how to add it, instead of
    failing with "Cannot find package".
  • Clerk's emulator no longer lets a signed-in browser look signed out a second later, while a
    test's clock stands still.
  • Each published package ships a NOTICE that covers only its own code under Apache-2.0, so
    scanners no longer flag the packages as non-permissive.

v0.1.3

Choose a tag to compare

@github-actions github-actions released this 24 Oct 12:39

New

  • Apps in any language. Every app now gets SSL_CERT_FILE, REQUESTS_CA_BUNDLE and
    CURL_CA_BUNDLE pointing at danwo's CA and the public roots, so a Go, Python or other app trusts
    danwo's proxy. See Other languages.
  • Two new examples. with-python is a SvelteKit site on a FastAPI API that survives a 54-fault
    matrix; with-go is a Vue 3 app on a Go API that survives 44. See
    Examples.
  • matrix.pageCalls also faults a page's own fetch() calls to your app: a 500, a dropped
    connection, a lost answer after a write. Off by default. See
    Fault kinds.
  • An app that runs no Node gets a clear note that danwo's start-up routing check can't cover it.

Fixed

  • The proxy no longer refuses a call to an app on this machine as a "passthrough loop" on Linux.
  • NO_PROXY no longer lists an address Python's httpx can't parse, which stopped httpx clients,
    and the Stripe and OpenAI SDKs with them, from starting.
  • A call held by a delay fault is dropped when its trial ends, instead of landing in the next one.
  • freePort() picks ports the system never hands out, and never gives two workers the same one.
  • Clerk's emulator retries ClerkJS from the CDN, pins a range like @1 to its exact version, names
    a script it can't fetch, and fetches the right URL on Windows.
  • Stripe's subscription-mode Checkout pays with the card typed on its page, and a declined card
    starts nothing.
  • An app's clock takes a new offset even when a watch event lands mid-write.

v0.1.2

Choose a tag to compare

@github-actions github-actions released this 23 Oct 14:12

New

  • Several suites in one repository report apart on GitHub. Name each with name in its
    config or --name; it gets its own check run, pull request comment section, summary and
    artifact. See CI.
  • expect(screen).toHaveURL() waits for the page's address, and app.url() reads it.
  • browser.contextOptions.permissions grants browser permissions, and app.clipboard() reads
    what a page copied (Chromium).
  • freePort() in @danwo/sdk picks a port for an app each worker starts.
  • appEnvironment({ app, proxy: false }) starts an app without danwo's proxy.
  • danwo test --no-ci keeps local defaults when CI is set, for a run started from inside
    another.
  • danwo doctor checks the device toolchain for a mobile config: Xcode and an iOS runtime, or the
    Android SDK, adb, the emulator and a JDK, and Flutter for a Flutter project.
  • The order files and tests run in is now a documented guarantee.
  • The Slack emulator handles app uninstalls, modal answers, leave events, channel privacy and
    Slack Connect.

Fixed

  • A step's screenshot is no longer lost when the next step navigates.
  • A click that closes its own page, such as a popup's Close button, counts as done instead of
    failing as the page goes.
  • A check whose locator matches several elements fails at once as a test issue, and says how to
    narrow it, instead of waiting out its timeout as an app bug.
  • Two workers building the same mobile app on a first run no longer collide: one builds, the
    others wait and reuse it.
  • The GitHub emulator answers the way the live API does, now checked by a fidelity suite that runs
    as a GitHub App.
  • Mail HTML, S3 hosts, form keys and Windows arguments are read in time linear in their length.
  • danwo matrix --plan says "1 trial on 1 worker".
  • The agent guides call startApp(app, env) as @danwo/sdk exports it.

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 23 Oct 08:14

The first release published from GitHub Actions through npm trusted publishing. Every package now
carries a provenance statement that links it to the commit and the workflow run that built it.

  • The coding agents guide no longer calls Windows support a work in progress.
    danwo runs web tests on Windows; mobile tests need macOS or Linux.

danwo 0.1.0

Choose a tag to compare

@faithfulojebiyi faithfulojebiyi released this 23 Oct 06:23

The first release. Install with npx @danwo/cli init; the quickstart takes it from there.

What's in it

  • Web tests in Chromium, Firefox and WebKit, with locators, expect and visual comparison. See Web.
  • Agent steps that replay with no model after the first run. See Agent steps.
  • Mobile tests on the iOS Simulator and Android emulators, or a remote device over adb. Expo, React Native, SwiftUI, Compose and Flutter apps.
  • 22 emulated providers, among them Stripe, Clerk, Resend, S3, Twilio and the model APIs. See Providers.
  • Invariants checked after every test, and a fault matrix that reruns a test under provider and database faults.
  • Real stacks: several apps, background jobs and Postgres behind one proxy.
  • Flight records and a dashboard for every run.
  • CI: GitHub checks and a pull request comment. Runs on macOS, Linux and Windows, on Node 22.22.3+ or 24.11.1+.
  • Models: any AI SDK model, the AI Gateway, OpenRouter, a local server, or a ChatGPT plan through the Codex CLI. See Use a subscription.
  • Coding agents: a skill and an MCP server for Claude Code, Cursor, Codex and Copilot.

Coming from another tool

Playwright, Cypress and Detox each have a migration guide.