mirror of
https://github.com/priyanshujain/sanderling.git
synced 2026-10-02 19:17:10 +00:00
Publish pipeline: goreleaser + Maven Central + npm (#1)
* feat(cli): add Version var and version subcommand * build(gradle): introduce uatu.version property for lockstep releases * build(sdk-android): swap GitHub Packages for vanniktech Maven Central plugin * build(spec-api): make package publish-ready for npm * ci(release): add goreleaser config for cross-platform uatu CLI builds * ci: add ci and release GitHub Actions workflows * ci: restrict ci.yml to PR + workflow_dispatch (no direct push to master) * docs(release): add local release targets, env example, and install docs * build(sdk-android): make signAllPublications conditional on signing key * ci(release): stage sidecar JAR at embed path before go build * chore(spec-api): regenerate package-lock for updated package.json * ci: install protoc-gen-go plugins before buf generate * ci: bump Node to 22 (required for --experimental-strip-types)
This commit is contained in:
17 files changed
+556
-37
No files matched your search
@@ -0,0 +1,39 @@
|
||||
# @uatu/spec
|
||||
|
||||
TypeScript spec API for [uatu](https://github.com/priyanshujain/uatu) — a property-based UI fuzzer for mobile apps.
|
||||
|
||||
Spec authors write specs in TypeScript that describe what an app should *always* do (safety invariants), generate weighted actions to exercise the app, and extract structured state from the accessibility tree. The `uatu` CLI picks up the spec and drives the app under test.
|
||||
|
||||
## Install
|
||||
|
||||
```sh
|
||||
npm install --save-dev @uatu/spec
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```ts
|
||||
import { extract, always, actions, Tap, weighted } from "@uatu/spec";
|
||||
|
||||
export const spec = {
|
||||
extract: extract((tree) => ({
|
||||
onHomeScreen: tree.some((n) => n.text === "Home"),
|
||||
})),
|
||||
|
||||
always: always(({ state }) => state.onHomeScreen || !state.startedOnHome),
|
||||
|
||||
actions: actions(({ tree }) =>
|
||||
weighted([
|
||||
[1, Tap(tree.first((n) => n.text === "Checkout"))],
|
||||
]),
|
||||
),
|
||||
};
|
||||
```
|
||||
|
||||
## Version compatibility
|
||||
|
||||
`@uatu/spec` is released in lockstep with the uatu CLI. Pin the same major/minor version as your installed `uatu` binary.
|
||||
|
||||
## License
|
||||
|
||||
Apache-2.0
|
||||
Generated
+4
-3
@@ -1,15 +1,16 @@
|
||||
{
|
||||
"name": "@uatu/spec",
|
||||
"version": "0.0.1",
|
||||
"version": "0.0.0-dev",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@uatu/spec",
|
||||
"version": "0.0.1",
|
||||
"version": "0.0.0-dev",
|
||||
"license": "Apache-2.0",
|
||||
"devDependencies": {
|
||||
"@types/node": "^22.7.5",
|
||||
"typescript": "^5.6.3"
|
||||
"typescript": "^5.9.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
|
||||
@@ -1,17 +1,42 @@
|
||||
{
|
||||
"name": "@uatu/spec",
|
||||
"version": "0.0.1",
|
||||
"description": "TypeScript spec API for Uatu (vendored locally; not published to npm in v0.1).",
|
||||
"private": true,
|
||||
"version": "0.0.0-dev",
|
||||
"description": "TypeScript spec API for uatu — a property-based UI fuzzer for mobile apps.",
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
"types": "src/index.ts",
|
||||
"types": "./dist/index.d.ts",
|
||||
"main": "./dist/index.js",
|
||||
"exports": {
|
||||
".": {
|
||||
"types": "./dist/index.d.ts",
|
||||
"import": "./dist/index.js"
|
||||
}
|
||||
},
|
||||
"files": [
|
||||
"dist",
|
||||
"README.md"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/priyanshujain/uatu.git",
|
||||
"directory": "pkg/spec-api"
|
||||
},
|
||||
"homepage": "https://github.com/priyanshujain/uatu",
|
||||
"bugs": {
|
||||
"url": "https://github.com/priyanshujain/uatu/issues"
|
||||
},
|
||||
"license": "Apache-2.0",
|
||||
"author": "Priyanshu Jain",
|
||||
"scripts": {
|
||||
"build": "tsc -p tsconfig.build.json",
|
||||
"prepublishOnly": "npm run build",
|
||||
"check": "tsc --noEmit",
|
||||
"test": "node --test --experimental-strip-types test/*.test.ts"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^22.7.5",
|
||||
"typescript": "^5.6.3"
|
||||
"typescript": "^5.9.3"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"extends": "./tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"noEmit": false,
|
||||
"emitDeclarationOnly": false,
|
||||
"declaration": true,
|
||||
"declarationMap": true,
|
||||
"sourceMap": true,
|
||||
"outDir": "./dist",
|
||||
"rootDir": "./src",
|
||||
"allowImportingTsExtensions": true,
|
||||
"rewriteRelativeImportExtensions": true
|
||||
},
|
||||
"include": ["src/**/*.ts"],
|
||||
"exclude": ["test/**/*", "dist/**/*", "node_modules"]
|
||||
}
|
||||
Reference in new issue
Block a user