Skip to content

Commit 561b890

Browse files
authored
chore: move e2e tests from cucumber to vitest (#7539)
1 parent 7804018 commit 561b890

File tree

266 files changed

+3071
-3710
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

266 files changed

+3071
-3710
lines changed

clients/client-acm/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
1313
"extract:docs": "api-extractor run --local",
1414
"generate:client": "node ../../scripts/generate-clients/single-service --solo acm",
15+
"test:e2e": "yarn g:vitest run -c vitest.config.e2e.mts",
16+
"test:e2e:watch": "yarn g:vitest watch -c vitest.config.e2e.mts",
1517
"test:index": "tsc --noEmit ./test/index-types.ts && node ./test/index-objects.spec.mjs"
1618
},
1719
"main": "./dist-cjs/index.js",
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { ACM } from "@aws-sdk/client-acm";
2+
import { beforeAll, describe, expect, test as it } from "vitest";
3+
4+
describe(ACM.name, () => {
5+
let client: ACM;
6+
7+
beforeAll(async () => {
8+
client = new ACM({ region: "us-west-2" });
9+
});
10+
11+
describe("Making a request to ACM service", () => {
12+
it("should successfully list certificates", async () => {
13+
const result = await client.listCertificates({});
14+
15+
expect(Array.isArray(result.CertificateSummaryList)).toBe(true);
16+
});
17+
});
18+
19+
describe("Error handling", () => {
20+
it("should handle ValidationException for invalid certificate ARN", async () => {
21+
await expect(
22+
client.describeCertificate({
23+
CertificateArn: "fake_arn",
24+
})
25+
).rejects.toThrow(
26+
expect.objectContaining({
27+
name: "ValidationException",
28+
})
29+
);
30+
});
31+
});
32+
});
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { defineConfig } from "vitest/config";
2+
3+
export default defineConfig({
4+
test: {
5+
exclude: ["**/*.browser.e2e.spec.ts"],
6+
include: ["**/*.e2e.spec.ts"],
7+
environment: "node",
8+
},
9+
mode: "development",
10+
});

clients/client-api-gateway/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
1313
"extract:docs": "api-extractor run --local",
1414
"generate:client": "node ../../scripts/generate-clients/single-service --solo api-gateway",
15+
"test:e2e": "yarn g:vitest run -c vitest.config.e2e.mts",
16+
"test:e2e:watch": "yarn g:vitest watch -c vitest.config.e2e.mts",
1517
"test:index": "tsc --noEmit ./test/index-types.ts && node ./test/index-objects.spec.mjs"
1618
},
1719
"main": "./dist-cjs/index.js",
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { APIGateway } from "@aws-sdk/client-api-gateway";
2+
import { beforeAll, describe, expect, test as it } from "vitest";
3+
4+
describe(APIGateway.name, () => {
5+
let client: APIGateway;
6+
7+
beforeAll(async () => {
8+
client = new APIGateway({ region: "us-west-2" });
9+
});
10+
11+
describe("Making a request", () => {
12+
it("should successfully get REST APIs", async () => {
13+
const result = await client.getRestApis({});
14+
15+
expect(Array.isArray(result.items)).toBe(true);
16+
});
17+
});
18+
19+
describe("Error handling", () => {
20+
it("should handle NotFoundException for invalid REST API ID", async () => {
21+
await expect(
22+
client.getRestApi({
23+
restApiId: "fake_id",
24+
})
25+
).rejects.toThrow(
26+
expect.objectContaining({
27+
name: "NotFoundException",
28+
})
29+
);
30+
});
31+
});
32+
});
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { defineConfig } from "vitest/config";
2+
3+
export default defineConfig({
4+
test: {
5+
exclude: ["**/*.browser.e2e.spec.ts"],
6+
include: ["**/*.e2e.spec.ts"],
7+
environment: "node",
8+
},
9+
mode: "development",
10+
});

clients/client-cloudformation/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
1313
"extract:docs": "api-extractor run --local",
1414
"generate:client": "node ../../scripts/generate-clients/single-service --solo cloudformation",
15+
"test:e2e": "yarn g:vitest run -c vitest.config.e2e.mts",
16+
"test:e2e:watch": "yarn g:vitest watch -c vitest.config.e2e.mts",
1517
"test:index": "tsc --noEmit ./test/index-types.ts && node ./test/index-objects.spec.mjs"
1618
},
1719
"main": "./dist-cjs/index.js",
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import { CloudFormation, paginateListStacks } from "@aws-sdk/client-cloudformation";
2+
import { beforeAll, describe, expect, test as it } from "vitest";
3+
4+
describe(CloudFormation.name, () => {
5+
let client: CloudFormation;
6+
7+
beforeAll(async () => {
8+
client = new CloudFormation({ region: "us-west-2" });
9+
});
10+
11+
describe("Describing stacks", () => {
12+
it("should return stacks list when describe stacks is called", async () => {
13+
const result = await client.describeStacks({});
14+
15+
expect(Array.isArray(result.Stacks)).toBe(true);
16+
});
17+
});
18+
19+
describe("Error handling", () => {
20+
it("should handle ValidationError for invalid stack creation", async () => {
21+
const templateBody = '{"Resources":{"member":{"Type":"AWS::SQS::Queue"}}}';
22+
23+
await expect(
24+
client.createStack({
25+
TemplateBody: templateBody,
26+
StackName: "", // Empty name should cause ValidationError
27+
})
28+
).rejects.toThrow(
29+
expect.objectContaining({
30+
name: "ValidationError",
31+
})
32+
);
33+
});
34+
});
35+
36+
describe("Paginating responses", () => {
37+
it("should paginate listStacks operation", async () => {
38+
const paginator = paginateListStacks({ client }, {});
39+
40+
let pageCount = 0;
41+
let lastPage;
42+
43+
for await (const page of paginator) {
44+
pageCount++;
45+
lastPage = page;
46+
}
47+
48+
expect(pageCount).toBeGreaterThanOrEqual(1);
49+
expect(lastPage?.NextToken).toBeUndefined(); // The last page must not contain a marker
50+
});
51+
});
52+
});
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { defineConfig } from "vitest/config";
2+
3+
export default defineConfig({
4+
test: {
5+
exclude: ["**/*.browser.e2e.spec.ts"],
6+
include: ["**/*.e2e.spec.ts"],
7+
environment: "node",
8+
},
9+
mode: "development",
10+
});

clients/client-cloudfront/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
"clean": "rimraf ./dist-* && rimraf *.tsbuildinfo",
1313
"extract:docs": "api-extractor run --local",
1414
"generate:client": "node ../../scripts/generate-clients/single-service --solo cloudfront",
15+
"test:e2e": "yarn g:vitest run -c vitest.config.e2e.mts",
16+
"test:e2e:watch": "yarn g:vitest watch -c vitest.config.e2e.mts",
1517
"test:index": "tsc --noEmit ./test/index-types.ts && node ./test/index-objects.spec.mjs"
1618
},
1719
"main": "./dist-cjs/index.js",

0 commit comments

Comments
 (0)