Skip to content

Release wdio_flutter to pub.dev (under the official webdriverio verified publisher) #479

Description

@goosewobbler

Track publishing the wdio_flutter Dart contract to pub.dev, gated on standing up the official webdriverio verified publisher.

Context

wdio_flutter is the app-side cooperative contract for @wdio/flutter-service — it gates browser.flutter.execute (Dart handlers) and browser.flutter.mock (the cooperative mock registry). It is not needed for native automation (find/tap/deeplink/contexts/logs all work via appium-flutter-driver without it), so it does not block the flutter service itself — only the execute/mock features for end users.

#466 wired releasekit's pub.dev publishing but left it disabled (publish.pub.enabled: false) so it doesn't gate @wdio/flutter-service prereleases. pub.dev rights are stricter than crates.io (no personal-token "create on first publish"; the first publish must be manual on an already-registered package, then automated publishing is configured), so we want the official publisher in place rather than publishing under a personal account.

Blocker

  • Set up the official webdriverio verified publisher on pub.dev (org/admin task — the long pole).

Release runbook (once the publisher exists)

  1. Flip publish.pub.enabledtrue in releasekit.config.json.
  2. Manual first publish: dart pub publish from packages/flutter-service/wdio_flutter under the webdriverio publisher (pub.dev OIDC only works after the package exists). The pubspec is linked to the service version, so this publishes whatever @wdio/flutter-service is at by then.
  3. On pub.dev → the package → Admin → enable "Automated publishing from GitHub Actions" (repo webdriverio/desktop-mobile, the release workflow). The Setup Dart step + id-token: write are already wired in _release.reusable.yml.
  4. Subsequent versions auto-publish via releasekit, linked to @wdio/flutter-service.

Pre-staged in #466 (ready to flip on)

  • version.groups.flutter (linked: @wdio/flutter-service + wdio_flutter), version.pub (pubspec bump), scope:flutter covers wdio_flutter.
  • wdio_flutter/LICENSE + CHANGELOG.md (pub.dev requirements); pubspec aligned to the linked baseline.
  • Setup Dart CI step (dart-lang/setup-dart@v1, OIDC token exchange).

Naming — verified wdio_flutter is correct

  • The underscore is mandatory, not just preferred. Dart/pub.dev package names must be lowercase_with_underscores (the name is also the import identifier — import 'package:wdio_flutter/wdio_flutter.dart'). A hyphenated wdio-flutter would be rejected by dart pub publish.
  • Consistent with our wdio-first crate familywdio-dioxus-bridge / wdio-dioxus-driver / wdio-dioxus-embedded-driver (crates.io, hyphenated per cargo); wdio_flutter is the same wdio-first pattern adapted to Dart's mandatory underscore. (The tauri crates tauri-plugin-wdio* are framework-first only because Tauri mandates the tauri-plugin-* prefix; Dart has no equivalent rule.)
  • Appropriate for the service: concise, available on pub.dev, and internally consistent (pubspec name, lib/wdio_flutter.dart, and the import all agree). No component suffix needed — it's the single Dart contract (unlike the multi-crate dioxus set).

Refs: #466

Metadata

Metadata

Assignees

No one assigned

    Labels

    scope:flutterFlutter service and wdio_flutter Dart contractstatus:blockedWork cannot start until something is resolved

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions