Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
186 changes: 0 additions & 186 deletions packages/cli/e2e/build.js

This file was deleted.

155 changes: 155 additions & 0 deletions packages/cli/e2e/build.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
import { beforeAll, describe, expect, test } from "vitest";

import { getRequiredEnv, run } from "./utils.js";

const token = getRequiredEnv("ARGOS_TOKEN");
const apiBaseURL = process.env.ARGOS_API_BASE_URL;
const buildNumber = process.env.ARGOS_BUILD_NUMBER || "28022";

const baseEnv = {
...process.env,
...(apiBaseURL ? { ARGOS_API_BASE_URL: apiBaseURL } : {}),
ARGOS_TOKEN: token,
};

function expectRunToFail(args, overrideEnv) {
try {
run(args, { ...baseEnv, ...overrideEnv });
} catch (error) {
return error;
}

throw new Error(
`Expected command to fail: node bin/argos-cli.js ${args.join(" ")}`,
);
}

let build;
let buildUrl;

beforeAll(() => {
build = JSON.parse(
run(["build", "get", buildNumber, "--json"], baseEnv).stdout,
);
buildUrl = build.url;
});

describe("argos build get", () => {
test("fails when token is missing for a build number", () => {
const error = expectRunToFail(["build", "get", "1"], { ARGOS_TOKEN: "" });

expect(error.status).not.toBe(0);
expect(error.stderr).toContain("No Argos token found");
});

test("fails when token is missing for a build URL", () => {
const error = expectRunToFail(
[
"build",
"get",
"https://app.argos-ci.com/argos-ci/argos-javascript/builds/1",
],
{ ARGOS_TOKEN: "" },
);

expect(error.status).not.toBe(0);
expect(error.stderr).toContain("No Argos token found");
});

test("fails for an unknown build number", () => {
const error = expectRunToFail(["build", "get", "999999"]);

expect(error.status).not.toBe(0);
expect(error.stderr).toMatch("Unauthorized");
});

test("fails for an invalid build reference", () => {
const error = expectRunToFail(["build", "get", "not-a-number"]);

expect(error.status).not.toBe(0);
expect(error.stderr).toContain("valid build number or Argos build URL");
});

test("returns build details for a build number in JSON mode", () => {
expect(build.id).toBeDefined();
expect(build.url).toBeDefined();
expect(build.number).toBe(Number(buildNumber));
});

test("returns build details for a build number in human-readable mode", () => {
const buildByNumberHumanOutput = run(["build", "get", buildNumber], {
...baseEnv,
});

expect(buildByNumberHumanOutput.stdout).toContain(`Build #${buildNumber}`);
expect(buildByNumberHumanOutput.stdout).toContain(
`Status: ${build.status}`,
);
expect(buildByNumberHumanOutput.stdout).toContain("Snapshots:");
expect(buildByNumberHumanOutput.stdout).toContain(`URL: ${buildUrl}`);
});

test("accepts an Argos build URL", () => {
const buildByUrlJsonOutput = run(
["build", "get", "--json", buildUrl],
baseEnv,
);
const buildByUrlJson = JSON.parse(buildByUrlJsonOutput.stdout);

expect(buildByUrlJson.id).toBe(build.id);
expect(buildByUrlJson.number).toBe(Number(buildNumber));
});
});

describe("argos build snapshots", () => {
test("fails when token is missing", () => {
const error = expectRunToFail(["build", "snapshots", "1"], {
ARGOS_TOKEN: "",
});

expect(error.status).not.toBe(0);
expect(error.stderr).toContain("No Argos token found");
});

test("prints human-readable snapshot data", () => {
const buildSnapshots = run(["build", "snapshots", buildNumber], {
...baseEnv,
});

expect(buildSnapshots.stdout).toContain("Snapshots for build #");
expect(buildSnapshots.stdout).toContain("Summary:");
});

test("returns structured snapshot data in JSON mode", () => {
const buildSnapshotsJsonOutput = run(
["build", "snapshots", buildNumber, "--json"],
baseEnv,
);
const buildSnapshotsJson = JSON.parse(buildSnapshotsJsonOutput.stdout);

expect(Array.isArray(buildSnapshotsJson)).toBe(true);
expect(buildSnapshotsJson[0]?.id).toBeTruthy();
});

test("accepts an Argos build URL", () => {
const buildSnapshotsJsonOutput = run(
["build", "snapshots", buildUrl, "--json"],
baseEnv,
);
const buildSnapshotsJson = JSON.parse(buildSnapshotsJsonOutput.stdout);

expect(Array.isArray(buildSnapshotsJson)).toBe(true);
});

test("supports filtering snapshots needing review", () => {
const snapshotsNeedsReviewJsonOutput = run(
["build", "snapshots", buildNumber, "--needs-review", "--json"],
baseEnv,
);
const snapshotsNeedingReview = JSON.parse(
snapshotsNeedsReviewJsonOutput.stdout,
);

expect(Array.isArray(snapshotsNeedingReview)).toBe(true);
});
});
11 changes: 0 additions & 11 deletions packages/cli/e2e/skip.js

This file was deleted.

12 changes: 12 additions & 0 deletions packages/cli/e2e/skip.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { expect, test } from "vitest";

import { getRequiredEnv, run } from "./utils.js";

getRequiredEnv("ARGOS_TOKEN");

test("skip returns a build URL", () => {
const buildName = `argos-cli-e2e-skipped-node-${process.env.NODE_VERSION}-${process.env.OS}`;
const skipResult = run(["skip", "--build-name", buildName]);

expect(skipResult.combined).toMatch(/\/builds\/(\d+)/);
});
18 changes: 0 additions & 18 deletions packages/cli/e2e/upload.js

This file was deleted.

Loading
Loading