Skip to content

Commit 2dc72b6

Browse files
committed
chore: terraform provisioners enabled in e2e by default
Opt out supported for "lite" tests. Environment checking happens to verify terraform + docker exist before running.
1 parent 487f0a8 commit 2dc72b6

File tree

3 files changed

+40
-3
lines changed

3 files changed

+40
-3
lines changed

site/e2e/constants.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ export const requireEnterpriseTests = Boolean(
3939
);
4040
export const enterpriseLicense = process.env.CODER_E2E_ENTERPRISE_LICENSE ?? "";
4141

42+
// Disabling terraform tests is optional for environments without Docker + Terraform.
43+
// By default, we opt into these tests.
44+
export const requireTerraformTests = !Boolean(
45+
process.env.CODER_E2E_DISABLE_TERRAFORM,
46+
);
47+
4248
// Fake experiments to verify that site presents them as enabled.
4349
export const e2eFakeExperiment1 = "e2e-fake-experiment-1";
4450
export const e2eFakeExperiment2 = "e2e-fake-experiment-2";

site/e2e/helpers.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import {
1818
coderPort,
1919
enterpriseLicense,
2020
prometheusPort,
21-
requireEnterpriseTests,
21+
requireEnterpriseTests, requireTerraformTests,
2222
} from "./constants";
2323
import { expectUrl } from "./expectUrl";
2424
import {
@@ -43,6 +43,16 @@ export function requiresEnterpriseLicense() {
4343
test.skip(!enterpriseLicense);
4444
}
4545

46+
// requiresTerraform by default is enabled.
47+
export function requiresTerraform() {
48+
if (requireTerraformTests) {
49+
return;
50+
}
51+
52+
test.skip(!requireTerraformTests);
53+
}
54+
55+
4656
// createWorkspace creates a workspace for a template.
4757
// It does not wait for it to be running, but it does navigate to the page.
4858
export const createWorkspace = async (

site/e2e/playwright.config.ts

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,34 @@ import {
66
coderdPProfPort,
77
e2eFakeExperiment1,
88
e2eFakeExperiment2,
9-
gitAuth,
9+
gitAuth, requireTerraformTests,
1010
} from "./constants";
11+
import {execSync} from "child_process";
12+
import {requiresTerraform} from "./helpers";
1113

1214
export const wsEndpoint = process.env.CODER_E2E_WS_ENDPOINT;
1315

1416
// This is where auth cookies are stored!
1517
export const storageState = path.join(__dirname, ".auth.json");
1618

19+
if(requireTerraformTests) {
20+
try {
21+
// If running terraform tests, verify the requirements exist in the
22+
// environment.
23+
//
24+
// These execs will throw an error if the status code is non-zero.
25+
// So if both these work, then we can launch terraform provisioners.
26+
const terraformExec = execSync('terraform --version')
27+
const dockerExec = execSync('dockser --version')
28+
} catch(e) {
29+
throw new Error("Terraform provisioners require docker & terraform. " +
30+
"At least one of these is not present in the runtime environment. To check yourself:\n" +
31+
"\tterraform --version\n"+
32+
"\tdocker --version")
33+
}
34+
}
35+
36+
1737
const localURL = (port: number, path: string): string => {
1838
return `http://localhost:${port}${path}`;
1939
};
@@ -60,7 +80,8 @@ export default defineConfig({
6080
"--dangerous-disable-rate-limits",
6181
"--provisioner-daemons 10",
6282
// TODO: Enable some terraform provisioners
63-
"--provisioner-types=echo",
83+
`--provisioner-types=echo${requireTerraformTests ? ",terraform": ""}`,
84+
`--provisioner-daemons=10`,
6485
"--web-terminal-renderer=dom",
6586
"--pprof-enable",
6687
]

0 commit comments

Comments
 (0)