• Stars
    star
    299
  • Rank 134,154 (Top 3 %)
  • Language
    Dart
  • License
    Apache License 2.0
  • Created almost 3 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

โœ… A streamlined testing framework for Dart & Flutter.

โœ… Spec

A streamlined testing framework for Dart & Flutter.

Melos docs.page Chat on Discord

What is it?

Spec builds on-top of existing Dart & Flutter testing tools to provide a streamlined & elegant testing environment. Spec provides both a CLI tool and Dart package.

CLI

The Spec CLI allows you to run the spec command from your CLI environment and run your tests:

  • Intuitive testing output interface, inspired by Jest.
  • Interactive CLI (via spec --watch); automatically re-run tests when source code changes & rerunning of only failed tests.
  • Run both Dart & Flutter tests in parallel with a single command.
  • Run tests from multiple packages at the same time using Melos.

spec

Package

The spec package provides a different take on how to write tests. Designed with type-safety and IDE autocompletion in mind, spec alters the way you write your tests to be more declarative, less error prone and force good habits.

Getting Started

Matchers

Spec CLI works alongside normal Dart test matchers, however also ships with custom matchers, see the API reference docs.

Example of testing using Spec matchers:

import 'package:spec/spec.dart';

void main() {
  test('future example', () async {
    final future = Future.value(42);
    expect(future).toEqual(future);
    await expect(future).completion.toEqual(42);
    await expect(future).throws.isArgumentError();
  });

  test('stream example', () async {
    final stream = Stream.value(42);
    await expect(stream).emits.toEqual(42);
    await expect(stream).emits.isNull();
    await expect(stream).emits.not.isNull();
    await expect(stream).emitsError.isArgumentError();
  });

  test('function example', () {
    void throwsFn() => throw Error();
    expect(throwsFn).returnsNormally();
    expect(throwsFn).throws.isArgumentError();
  });
}

CLI

Installation

dart pub global activate spec_cli

Usage

Run tests:

spec

Run tests in interactive mode:

spec --watch

Interactive mode supports a number of keyboard shortcuts:

Watch Usage:
 โ€บ Press f to run only failed tests.
 โ€บ Press t to filter by a test name regex pattern.
 โ€บ Press q to quit watch mode.
 โ€บ Press Enter to trigger a test run.

GitHub Action

If you want to use Spec in your GitHub actions pipeline you can utilize the Spec GitHub action, instructions for how to use it can be found on the the spec-action's marketplace page and in its repository.


LICENSE

Built and maintained by Invertase.

More Repositories

1

react-native-firebase

๐Ÿ”ฅ A well-tested feature-rich modular Firebase implementation for React Native. Supports both iOS & Android platforms for all Firebase services.
JavaScript
11,380
star
2

rdash-angular

AngularJS implementation of the RDash admin dashboard theme
HTML
4,697
star
3

react-native-material-design

React Native UI Components for Material Design
JavaScript
3,158
star
4

notifee

โš›๏ธ A feature rich notifications library for React Native.
TypeScript
1,642
star
5

react-native-apple-authentication

A React Native library providing support for Apple Authentication on iOS and Android.
JavaScript
1,320
star
6

react-native-firebase-starter

DEPRECATED: For RNFB v5 only.
JavaScript
1,171
star
7

melos

๐ŸŒ‹ A tool for managing Dart projects with multiple packages. With IntelliJ and Vscode IDE support. Supports automated versioning, changelogs & publishing via Conventional Commits.
Dart
1,018
star
8

react-native-google-mobile-ads

React Native Google Mobile Ads enables you to monetize your app with AdMob.
TypeScript
575
star
9

react-native-material-design-demo

An Android app to demonstrate react-native-material-design
JavaScript
495
star
10

react-native-notifee

Moved to https://github.com/invertase/notifee
TypeScript
467
star
11

stripe-firebase-extensions

Repository of Firebase Extensions built by Stripe.
TypeScript
416
star
12

docs.page

Instant Open Source docs with zero configuration.
TypeScript
402
star
13

firestore-ios-sdk-frameworks

โšก Precompiled Firestore iOS SDKs extracted from the Firebase iOS SDK repository release downloads for faster build times.
Ruby
390
star
14

react-query-firebase

React Query hooks for managing asynchronous operations with Firebase. Supports Authentication, Analytics, Firestore & Realtime Database.
TypeScript
355
star
15

denque

The fastest javascript implementation of a double-ended queue. Used by the official Redis, MongoDB, MariaDB & MySQL libraries for Node.js and many other libraries.
JavaScript
346
star
16

dart_edge

Run Dart on the Edge - supporting Vercel & Cloudflare Workers (more coming soon).
Dart
298
star
17

zapp.run

Zapp! A free online sandbox environment for building Flutter applications in the browser.
Dart
296
star
18

angular-toasty

A simple standalone AngularJS module with extensive features that provides growl-style alerts and messages for your app!
CSS
255
star
19

dart_custom_lint

๐Ÿ’ก Easily write powerful Dart & Flutter lint rules for your projects or for users of your packages.
Dart
253
star
20

react-native-firebase-docs

DEPRECATED: For RNFB v5 only.
191
star
21

github-action-dart-analyzer

A GitHub action to run Dart analyzer with annotation support.
TypeScript
163
star
22

flutterfire_cli

A CLI to help with using FlutterFire in your Flutter applications.
Dart
154
star
23

react-native-firebase-authentication-example

An example React Native Firebase application integrating authentication.
TypeScript
134
star
24

conference-app

Dart
116
star
25

jet

โœˆ๏ธ Test your React Native modules e2e; mock-free and native testing code free.
JavaScript
96
star
26

dart_firebase_admin

๐Ÿ”ฅ A Firebase Admin SDK for Dart. (WIP)
Dart
91
star
27

globe

๐ŸŒŽ The global deployment platform for Dart & Flutter applications.
Dart
68
star
28

react-native-gradle-plugin

A gradle plugin for React Native Android that simplifies and standardises build configurations (such as dependency versioning) for Projects & React Native modules.
Groovy
61
star
29

dart_docker

๐Ÿ‹ A Dart client for the Docker API via local unix socket.
Dart
41
star
30

flutter_desktop_webview_auth

WebView OAuth flows for desktop flutter apps
C++
29
star
31

dart_firebase_apis

๐Ÿ”ฅ Generated Firebase APIs for Dart. Additionally Includes private and unlisted APIs.
Dart
29
star
32

deeps

Performant utilities to manage deeply nested objects. get, set, flatten, diff etc.
JavaScript
26
star
33

puppeteer-pool

Flexible Puppeteer Browser instance resource pooling.
JavaScript
26
star
34

nodejs-paddle-sdk

A fully typed Node.js library for integration with Paddle.
TypeScript
25
star
35

samples

Collection of samples from our projects and tutorials.
Dart
20
star
36

dart-cli-utilities

โš’๏ธ A monorepo containing a collection of packages that provide useful functionality for building CLI applications in Dart.
Dart
20
star
37

cluster-key-slot

Generates CRC hashes for strings - for use by Node Redis clients to determine key slots.
JavaScript
16
star
38

react-native-firebase-workshop-app

Showcasing React Native + Firebase
TypeScript
13
star
39

sails-firebase-auth

A SailsJS v1 JSON starter api with Firebase token authentication.
JavaScript
10
star
40

crc16

Native node addon to calculate CRC16 values.
C++
10
star
41

firebase-firestore-fields

Convert Firebase Cloud Firestore fields into a usable JavaScript format
JavaScript
10
star
42

react-native-auto-link-example

Init a React Native project with auto-linking ๐Ÿ”ฅ
Objective-C
10
star
43

react-native-template

Generic template for Invertase React Native projects
Objective-C
10
star
44

remix-firebase-storage-file-handler

An upload handler for Remix using Firebase Storage
TypeScript
8
star
45

a2a

Async await to Array -> `const [error, value] = await A2A(fooPromise());`
JavaScript
7
star
46

nodejs-google-java-format

Node.js repackaging of Google's native `google-java-format` tool.
JavaScript
7
star
47

dart_globe_examples

Repository containing various Dart examples for Globe.
6
star
48

nx-dart

A Nx plugin, that adds support for developing Dart and Flutter packages in a Nx workspace.
TypeScript
6
star
49

babel-preset-react-native-syntax

๐Ÿ“ฆBabel preset providing syntax only plugins used by babel-preset-react-native - supports React Native ^0.56.0.
JavaScript
5
star
50

firebase-relationship

A simple Firebase Realtime Database relationship manager.
JavaScript
5
star
51

firebase-extension-utilities

TypeScript
4
star
52

sails-ioredis

Redis adapter for waterline with sentinel and cluster support support (ioredis)
JavaScript
4
star
53

tutorials

๐ŸŽ“ A collection of open-source tutorials by us and the open-source community covering topics such as React Native and Firebase.
4
star
54

balanced-employee-ip-agreement

An English law and Open Source friendly Balanced Employee IP Agreement - providing a balanced approach to assigning control of intellectual property (IP) created by UK company employees. See releases for PDF/MD files
4
star
55

flutterfire_ui

Dart
3
star
56

redis-writable

Fast conversion of commands and args to redis protocol writables.
JavaScript
3
star
57

wtfork

Subscribe to and publish events between parent and child node processes using the standard node event emitter api or call parent methods directly from the child process and vice versa.
JavaScript
3
star
58

firebase-functions-python-old

[WIP] Firebase SDK for Cloud Functions and Python.
Python
3
star
59

llm-gcp

Python
3
star
60

extensions-quickstart-js

Firebase Extensions quick start examples
TypeScript
3
star
61

firebase_performance_flutter_example

Testing
Dart
2
star
62

meta

General guidelines and documentation for the Invertase GitHub org.
1
star
63

ios-sdk-10-issues

iOS SDK 10 Firebase Storage issues
Objective-C
1
star
64

react-custom-event

React hook for window CustomEvent
JavaScript
1
star
65

docker-react-native-firebase-android

Dockerfile
1
star
66

oss-discord-community

Nothing to see here.
1
star
67

.github

Default community health files for Invertase.
1
star