Skip to content

feat(railway): add Railway provider with core resources#1332

Open
Makisuo wants to merge 17 commits intoalchemy-run:mainfrom
Makisuo:feat/railway-provider
Open

feat(railway): add Railway provider with core resources#1332
Makisuo wants to merge 17 commits intoalchemy-run:mainfrom
Makisuo:feat/railway-provider

Conversation

@Makisuo
Copy link

@Makisuo Makisuo commented Feb 14, 2026

Summary

  • Adds a new Railway cloud infrastructure provider with 7 resources: Project, Service, Environment, Variable, Volume, Domain, and TCPProxy
  • Includes a lightweight GraphQL API client using safeFetch with Bearer token auth
  • All 8 tests passing against the live Railway API (gated with RAILWAY_API_TOKEN)

Resources

Resource Description
Project Create/update/delete with workspace auto-detection and adopt support
Service Deploy from Docker images or GitHub repos with instance config
Environment Isolated environments with immutable name (replace on change)
Variable Bulk upsert/delete with Secret support and key removal tracking
Volume Persistent storage with conditional deletion
Domain Railway-generated (*.up.railway.app) or custom domains
TCPProxy Expose non-HTTP services via TCP

Usage

import { Project, Service, Variable, Domain } from "alchemy/railway";

const project = await Project("my-app", { name: "my-app" });
const api = await Service("api", {
  project,
  source: { image: "node:20" },
  startCommand: "node server.js",
});
await Variable("vars", {
  project,
  environment: project.defaultEnvironmentId,
  service: api,
  variables: { NODE_ENV: "production" },
});
const domain = await Domain("domain", {
  service: api,
  environment: project.defaultEnvironmentId,
});

Add a new Railway cloud infrastructure provider with resources for:
- Project — create/update/delete with workspace auto-detection and adopt support
- Service — deploy from Docker images or GitHub repos with instance config
- Environment — isolated environments with immutable name (replace on change)
- Variable — bulk upsert/delete with Secret support and key tracking
- Volume — persistent storage with immutable mountPath and conditional deletion
- Domain — Railway-generated (*.up.railway.app) or custom domains
- TCPProxy — expose non-HTTP services with immutable applicationPort

Includes:
- GraphQL API client using safeFetch with Bearer token auth
- 7 test suites (all passing against live Railway API)
- Provider docs (index + 7 resource pages)
- Getting started guide
- Package.json export

```ts
import { Project, Service, Variable, Domain } from "alchemy/railway";

const project = await Project("my-app", { name: "my-app" });
const api = await Service("api", {
  project,
  source: { image: "node:20" },
  startCommand: "node server.js",
});
await Variable("vars", {
  project,
  environment: project.defaultEnvironmentId,
  service: api,
  variables: { NODE_ENV: "production" },
});
const domain = await Domain("domain", {
  service: api,
  environment: project.defaultEnvironmentId,
});
```

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Makisuo Makisuo changed the title feat(railway): add Railway provider with 7 resources feat(railway): add Railway provider with core resources Feb 14, 2026
@Makisuo Makisuo marked this pull request as ready for review February 14, 2026 23:03
@Makisuo Makisuo closed this Feb 15, 2026
@Makisuo Makisuo reopened this Feb 15, 2026
Makisuo and others added 8 commits February 15, 2026 16:37
…pt fallback

When alchemy state is lost or stale but the Railway service already exists,
serviceCreate fails with "already exists". If adopt is enabled, catch this
error and fall back to finding and adopting the existing service.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Railway API rejects serviceUpdate with the same name, returning
"A service named X already exists in this project". Skip the
mutation when the name hasn't actually changed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add serviceExists check in update path. If a service was deleted from
Railway but alchemy state still references it, fall through to the
create path instead of silently skipping.
Deleted/detached services are still queryable by ID via the Railway API
but don't appear in the project's service list. Check the project's
services instead to properly detect externally-deleted services.
The serviceExists check was added as a workaround for stale state but
is not standard alchemy practice. The proper fix is to clear stale
state rather than query Railway on every update.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@john-royal john-royal self-assigned this Feb 16, 2026
@pkg-pr-new
Copy link

pkg-pr-new bot commented Feb 17, 2026

Open in StackBlitz

npm i https://pkg.pr.new/alchemy-run/alchemy@1332

commit: e3f4884

@john-royal
Copy link
Collaborator

Started working on getting all the tests passing so we can merge, but ran into a rate limit! Waiting on Railway to get it fixed.

@john-royal
Copy link
Collaborator

Hi @Makisuo, I'm having some trouble with test failures. Do these pass on your end?

$ vitest run alchemy/test/railway

 RUN  v3.2.4 /Users/johnroyal/Developer/alchemy-5

 ✓ alchemy/test/railway/delete-retry.test.ts (3 tests) 5ms
 ✓ alchemy/test/railway/domain-replace.test.ts (2 tests) 1289ms
   ✓ Railway Domain Replace > replacing a generated domain with a custom domain creates the custom domain  735ms
   ✓ Railway Domain Replace > retries transient domain delete lock errors during replacement cleanup  553ms
 ❯ alchemy/test/railway/environment.test.ts (1 test | 1 failed) 1287ms
   × Railway Environment > create, replace, and delete environment 1287ms
     → Railway API error: Problem processing request
 ✓ alchemy/test/railway/project.test.ts (2 tests) 3621ms
   ✓ Railway Project > create, update, and delete project  3620ms
   ✓ Railway Project > does not delete project when delete is false  2796ms
 ✓ alchemy/test/railway/service.test.ts (1 test) 5453ms
   ✓ Railway Service > create, update, and delete service  5452ms
 ❯ alchemy/test/railway/service-deployment-trigger.test.ts (3 tests | 1 failed) 5771ms
   × Railway Service deployment trigger > create, update, and remove managed deployment trigger 2817ms
     → Railway API error: Problem processing request
   ✓ Railway Service deployment trigger > throws when deploymentTrigger is configured without source.repo 15ms
   ✓ Railway Service deployment trigger > adopt existing service and reconcile deployment trigger  2935ms
 ❯ alchemy/test/railway/volume.test.ts (1 test | 1 failed) 8404ms
   × Railway Volume > create, replace, and delete volume 8404ms
     → expected '/data' to deeply equal '/data/v2'
 ✓ alchemy/test/railway/variable.test.ts (1 test) 13773ms
   ✓ Railway Variable > create, update, and delete variables  13772ms
 ✓ alchemy/test/railway/domain.test.ts (1 test) 17529ms
   ✓ Railway Domain > create and delete railway domain  17529ms
 ❯ alchemy/test/railway/tcp-proxy.test.ts (1 test | 1 failed) 26467ms
   × Railway TCPProxy > create, replace, and delete tcp proxy 26466ms
     → Railway API error: Cannot delete TCP proxy: an operation is already in progress

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Tests 4 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯

 FAIL  alchemy/test/railway/environment.test.ts > Railway Environment > create, replace, and delete environment
RailwayError: Railway API error: Problem processing request
 ❯ RailwayApi.query alchemy/src/railway/api.ts:90:13
     88| 
     89|     if (json.errors?.length) {
     90|       throw new RailwayError(
       |             ^
     91|         `Railway API error: ${json.errors.map((e) => e.message).join(", ")}`,
     92|         json.errors,
 ❯ withExponentialBackoff alchemy/src/util/retry.ts:24:14
 ❯ runRailwayDeleteMutation alchemy/src/railway/delete-retry.ts:53:5
 ❯ create.<anonymous> alchemy/src/railway/environment.ts:127:9
 ❯ _alchemy.run alchemy/src/alchemy.ts:478:12
 ❯ destroy alchemy/src/destroy.ts:180:7
 ❯ destroyAll alchemy/src/destroy.ts:275:7
 ❯ alchemy/src/destroy.ts:69:7
 ❯ destroy alchemy/src/destroy.ts:66:5

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/4]⎯

 FAIL  alchemy/test/railway/service-deployment-trigger.test.ts > Railway Service deployment trigger > create, update, and remove managed deployment trigger
RailwayError: Railway API error: Problem processing request
 ❯ RailwayApi.query alchemy/src/railway/api.ts:90:13
     88| 
     89|     if (json.errors?.length) {
     90|       throw new RailwayError(
       |             ^
     91|         `Railway API error: ${json.errors.map((e) => e.message).join(", ")}`,
     92|         json.errors,
 ❯ updateDeploymentTrigger alchemy/src/railway/service.ts:735:16
 ❯ reconcileDeploymentTrigger alchemy/src/railway/service.ts:633:10
 ❯ create.<anonymous> alchemy/src/railway/service.ts:331:36
 ❯ Scope.<anonymous> alchemy/src/apply.ts:282:15
 ❯ _alchemy.run alchemy/src/alchemy.ts:478:12
 ❯ _apply alchemy/src/apply.ts:273:16
 ❯ alchemy/test/railway/service-deployment-trigger.test.ts:75:19
 ❯ Scope.<anonymous> alchemy/src/test/vitest.ts:234:13

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/4]⎯

 FAIL  alchemy/test/railway/tcp-proxy.test.ts > Railway TCPProxy > create, replace, and delete tcp proxy
RailwayError: Railway API error: Cannot delete TCP proxy: an operation is already in progress
 ❯ RailwayApi.query alchemy/src/railway/api.ts:90:13
     88| 
     89|     if (json.errors?.length) {
     90|       throw new RailwayError(
       |             ^
     91|         `Railway API error: ${json.errors.map((e) => e.message).join(", ")}`,
     92|         json.errors,
 ❯ withExponentialBackoff alchemy/src/util/retry.ts:24:14
 ❯ runRailwayDeleteMutation alchemy/src/railway/delete-retry.ts:53:5
 ❯ create.<anonymous> alchemy/src/railway/tcp-proxy.ts:135:9
 ❯ _alchemy.run alchemy/src/alchemy.ts:478:12
 ❯ destroy alchemy/src/destroy.ts:180:7
 ❯ Scope.destroyPendingDeletions alchemy/src/scope.ts:670:9
 ❯ alchemy/src/destroy.ts:68:7
 ❯ destroy alchemy/src/destroy.ts:66:5

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/4]⎯

 FAIL  alchemy/test/railway/volume.test.ts > Railway Volume > create, replace, and delete volume
AssertionError: expected '/data' to deeply equal '/data/v2'

Expected: "/data/v2"
Received: "/data"

 ❯ alchemy/test/railway/volume.test.ts:55:32
     53|       });
     54| 
     55|       expect(volume.mountPath).toEqual("/data/v2");
       |                                ^
     56|       expect(volume.volumeId).toBeTruthy();
     57|       expect(volume.volumeId).not.toEqual(originalVolumeId);
 ❯ Scope.<anonymous> alchemy/src/test/vitest.ts:234:13
 ❯ _alchemy.run alchemy/src/alchemy.ts:478:12

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/4]⎯


 Test Files  4 failed | 6 passed (10)
      Tests  4 failed | 12 passed (16)
   Start at  14:33:15
   Duration  27.74s (transform 651ms, setup 168ms, collect 9.55s, tests 83.60s, environment 1ms, prepare 611ms)

error: script "test" exited with code 1

@Makisuo
Copy link
Author

Makisuo commented Feb 23, 2026

Hi @Makisuo, I'm having some trouble with test failures. Do these pass on your end?

$ vitest run alchemy/test/railway

 RUN  v3.2.4 /Users/johnroyal/Developer/alchemy-5

 ✓ alchemy/test/railway/delete-retry.test.ts (3 tests) 5ms
 ✓ alchemy/test/railway/domain-replace.test.ts (2 tests) 1289ms
   ✓ Railway Domain Replace > replacing a generated domain with a custom domain creates the custom domain  735ms
   ✓ Railway Domain Replace > retries transient domain delete lock errors during replacement cleanup  553ms
 ❯ alchemy/test/railway/environment.test.ts (1 test | 1 failed) 1287ms
   × Railway Environment > create, replace, and delete environment 1287ms
     → Railway API error: Problem processing request
 ✓ alchemy/test/railway/project.test.ts (2 tests) 3621ms
   ✓ Railway Project > create, update, and delete project  3620ms
   ✓ Railway Project > does not delete project when delete is false  2796ms
 ✓ alchemy/test/railway/service.test.ts (1 test) 5453ms
   ✓ Railway Service > create, update, and delete service  5452ms
 ❯ alchemy/test/railway/service-deployment-trigger.test.ts (3 tests | 1 failed) 5771ms
   × Railway Service deployment trigger > create, update, and remove managed deployment trigger 2817ms
     → Railway API error: Problem processing request
   ✓ Railway Service deployment trigger > throws when deploymentTrigger is configured without source.repo 15ms
   ✓ Railway Service deployment trigger > adopt existing service and reconcile deployment trigger  2935ms
 ❯ alchemy/test/railway/volume.test.ts (1 test | 1 failed) 8404ms
   × Railway Volume > create, replace, and delete volume 8404ms
     → expected '/data' to deeply equal '/data/v2'
 ✓ alchemy/test/railway/variable.test.ts (1 test) 13773ms
   ✓ Railway Variable > create, update, and delete variables  13772ms
 ✓ alchemy/test/railway/domain.test.ts (1 test) 17529ms
   ✓ Railway Domain > create and delete railway domain  17529ms
 ❯ alchemy/test/railway/tcp-proxy.test.ts (1 test | 1 failed) 26467ms
   × Railway TCPProxy > create, replace, and delete tcp proxy 26466ms
     → Railway API error: Cannot delete TCP proxy: an operation is already in progress

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯ Failed Tests 4 ⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯

 FAIL  alchemy/test/railway/environment.test.ts > Railway Environment > create, replace, and delete environment
RailwayError: Railway API error: Problem processing request
 ❯ RailwayApi.query alchemy/src/railway/api.ts:90:13
     88| 
     89|     if (json.errors?.length) {
     90|       throw new RailwayError(
       |             ^
     91|         `Railway API error: ${json.errors.map((e) => e.message).join(", ")}`,
     92|         json.errors,
 ❯ withExponentialBackoff alchemy/src/util/retry.ts:24:14
 ❯ runRailwayDeleteMutation alchemy/src/railway/delete-retry.ts:53:5
 ❯ create.<anonymous> alchemy/src/railway/environment.ts:127:9
 ❯ _alchemy.run alchemy/src/alchemy.ts:478:12
 ❯ destroy alchemy/src/destroy.ts:180:7
 ❯ destroyAll alchemy/src/destroy.ts:275:7
 ❯ alchemy/src/destroy.ts:69:7
 ❯ destroy alchemy/src/destroy.ts:66:5

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[1/4]⎯

 FAIL  alchemy/test/railway/service-deployment-trigger.test.ts > Railway Service deployment trigger > create, update, and remove managed deployment trigger
RailwayError: Railway API error: Problem processing request
 ❯ RailwayApi.query alchemy/src/railway/api.ts:90:13
     88| 
     89|     if (json.errors?.length) {
     90|       throw new RailwayError(
       |             ^
     91|         `Railway API error: ${json.errors.map((e) => e.message).join(", ")}`,
     92|         json.errors,
 ❯ updateDeploymentTrigger alchemy/src/railway/service.ts:735:16
 ❯ reconcileDeploymentTrigger alchemy/src/railway/service.ts:633:10
 ❯ create.<anonymous> alchemy/src/railway/service.ts:331:36
 ❯ Scope.<anonymous> alchemy/src/apply.ts:282:15
 ❯ _alchemy.run alchemy/src/alchemy.ts:478:12
 ❯ _apply alchemy/src/apply.ts:273:16
 ❯ alchemy/test/railway/service-deployment-trigger.test.ts:75:19
 ❯ Scope.<anonymous> alchemy/src/test/vitest.ts:234:13

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[2/4]⎯

 FAIL  alchemy/test/railway/tcp-proxy.test.ts > Railway TCPProxy > create, replace, and delete tcp proxy
RailwayError: Railway API error: Cannot delete TCP proxy: an operation is already in progress
 ❯ RailwayApi.query alchemy/src/railway/api.ts:90:13
     88| 
     89|     if (json.errors?.length) {
     90|       throw new RailwayError(
       |             ^
     91|         `Railway API error: ${json.errors.map((e) => e.message).join(", ")}`,
     92|         json.errors,
 ❯ withExponentialBackoff alchemy/src/util/retry.ts:24:14
 ❯ runRailwayDeleteMutation alchemy/src/railway/delete-retry.ts:53:5
 ❯ create.<anonymous> alchemy/src/railway/tcp-proxy.ts:135:9
 ❯ _alchemy.run alchemy/src/alchemy.ts:478:12
 ❯ destroy alchemy/src/destroy.ts:180:7
 ❯ Scope.destroyPendingDeletions alchemy/src/scope.ts:670:9
 ❯ alchemy/src/destroy.ts:68:7
 ❯ destroy alchemy/src/destroy.ts:66:5

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[3/4]⎯

 FAIL  alchemy/test/railway/volume.test.ts > Railway Volume > create, replace, and delete volume
AssertionError: expected '/data' to deeply equal '/data/v2'

Expected: "/data/v2"
Received: "/data"

 ❯ alchemy/test/railway/volume.test.ts:55:32
     53|       });
     54| 
     55|       expect(volume.mountPath).toEqual("/data/v2");
       |                                ^
     56|       expect(volume.volumeId).toBeTruthy();
     57|       expect(volume.volumeId).not.toEqual(originalVolumeId);
 ❯ Scope.<anonymous> alchemy/src/test/vitest.ts:234:13
 ❯ _alchemy.run alchemy/src/alchemy.ts:478:12

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯[4/4]⎯


 Test Files  4 failed | 6 passed (10)
      Tests  4 failed | 12 passed (16)
   Start at  14:33:15
   Duration  27.74s (transform 651ms, setup 168ms, collect 9.55s, tests 83.60s, environment 1ms, prepare 611ms)

error: script "test" exited with code 1

let me double check, i had run them before and everything was passing.
I'll run them again and see whats going wrong here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants