Skip to content

Commit 82d4a4f

Browse files
authored
Merge pull request #5395 from JetBrains/playground/e2e-local
feat(ci): run production test in CI for any branch
2 parents 32adc9a + 83a721f commit 82d4a4f

File tree

17 files changed

+98
-420
lines changed

17 files changed

+98
-420
lines changed

.teamcity/common/E2ERunner.kt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package common
2+
3+
import jetbrains.buildServer.configs.kotlin.BuildStep
4+
import jetbrains.buildServer.configs.kotlin.BuildType
5+
import jetbrains.buildServer.configs.kotlin.buildSteps.ScriptBuildStep
6+
7+
open class E2ERunner(init: BuildType.() -> Unit) : BuildType({
8+
artifactRules = """
9+
+:test-results/* => test-results.zip
10+
""".trimIndent()
11+
12+
params {
13+
param("env.WEBTEAM_UI_NPM_TOKEN", "%WEBTEAM_UI_NPM_TOKEN%")
14+
param("env.CI", "true")
15+
}
16+
17+
vcs {
18+
root(vcsRoots.KotlinLangOrg)
19+
}
20+
21+
init()
22+
})

.teamcity/tests/buildTypes/E2EProductionTest.kt

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,18 @@
11
package tests.buildTypes
22

3+
import common.E2ERunner
34
import common.extensions.isProjectPlayground
4-
import jetbrains.buildServer.configs.kotlin.BuildType
55
import jetbrains.buildServer.configs.kotlin.buildFeatures.notifications
66
import jetbrains.buildServer.configs.kotlin.buildSteps.ScriptBuildStep
77
import jetbrains.buildServer.configs.kotlin.buildSteps.script
88
import jetbrains.buildServer.configs.kotlin.triggers.schedule
99

1010

11-
object E2EProductionTest : BuildType({
11+
object E2EProductionTest : E2ERunner({
1212
name = "E2E Test in Production"
1313

14-
artifactRules = """
15-
+:test-results/* => test-results.zip
16-
""".trimIndent()
17-
18-
vcs {
19-
root(vcsRoots.KotlinLangOrg)
14+
params {
15+
param("env.BASE_URL", "https://kotlinlang.org")
2016
}
2117

2218
triggers {
@@ -38,9 +34,11 @@ object E2EProductionTest : BuildType({
3834

3935
steps {
4036
script {
37+
name = "Run E2E tests"
38+
// language=sh
4139
scriptContent = """
4240
yarn install --immutable
43-
yarn test:production:ci
41+
yarn test:ci
4442
""".trimIndent()
4543
dockerImage = "mcr.microsoft.com/playwright:v1.57.0"
4644
dockerImagePlatform = ScriptBuildStep.ImagePlatform.Linux
Lines changed: 10 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,34 @@
11
package tests.buildTypes
22

3-
import documentation.builds.KotlinWithCoroutines
4-
import jetbrains.buildServer.configs.kotlin.BuildType
3+
import common.E2ERunner
54
import jetbrains.buildServer.configs.kotlin.FailureAction
65
import jetbrains.buildServer.configs.kotlin.buildSteps.script
7-
import kotlinlang.builds.BuildJsAssets
8-
import references.builds.kotlinx.coroutines.KotlinxCoroutinesBuildApiReference
9-
import references.builds.kotlinx.serialization.KotlinxSerializationBuildApiReference
6+
import kotlinlang.builds.BuildSitePages
107

8+
object E2ETests : E2ERunner({
9+
name = "E2E Branch tests"
1110

12-
object E2ETests : BuildType({
13-
name = "E2E tests"
14-
15-
artifactRules = """
16-
+:test-results/* => test-results.zip
17-
""".trimIndent()
18-
19-
vcs {
20-
root(vcsRoots.KotlinLangOrg)
11+
requirements {
12+
exists("docker.server.version")
2113
}
2214

2315
dependencies {
24-
artifacts(KotlinWithCoroutines) {
25-
cleanDestination = true
26-
artifactRules = """
27-
+:webHelpImages.zip!** => dist/docs/images/
28-
+:webHelpKR2.zip!** => dist/docs/
29-
""".trimIndent()
30-
}
31-
32-
dependency(BuildJsAssets) {
16+
dependency(BuildSitePages) {
3317
snapshot {
3418
onDependencyFailure = FailureAction.FAIL_TO_START
3519
onDependencyCancel = FailureAction.CANCEL
3620
}
37-
38-
artifacts {
39-
artifactRules = "+:assets.zip!** => _assets/"
40-
}
41-
}
42-
43-
dependency(KotlinxCoroutinesBuildApiReference) {
44-
snapshot {
45-
onDependencyFailure = FailureAction.CANCEL
46-
onDependencyCancel = FailureAction.CANCEL
47-
}
48-
49-
artifacts {
50-
artifactRules = "+:pages.zip!** => libs/kotlinx.coroutines/"
51-
}
52-
}
53-
54-
dependency(KotlinxSerializationBuildApiReference) {
55-
snapshot {
56-
onDependencyFailure = FailureAction.CANCEL
57-
onDependencyCancel = FailureAction.CANCEL
58-
}
59-
6021
artifacts {
61-
artifactRules = "+:pages.zip!** => libs/kotlinx.serialization/"
22+
buildRule = sameChainOrLastFinished()
23+
artifactRules = "+:pages.zip!** => dist/"
6224
}
6325
}
6426
}
6527

6628
steps {
67-
script {
68-
name = "Set execute permissions"
69-
scriptContent = "chmod +x ./scripts/test/run-e2e-tests.sh"
70-
}
7129
script {
7230
name = "Run E2E tests"
73-
scriptContent = "./scripts/test/run-e2e-tests.sh"
31+
scriptContent = "./scripts/run-e2e-tests.sh"
7432
}
7533
}
76-
77-
artifactRules = """
78-
+:test-results/ => test-results/
79-
""".trimIndent()
80-
81-
requirements {
82-
exists("docker.server.version")
83-
contains("docker.server.osType", "linux")
84-
}
8534
})

docker-compose-e2e-statics.yml

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,33 @@
1-
version: '3'
21
services:
3-
nginx-server:
4-
build:
5-
context: .
6-
dockerfile: ./dockerfiles/nginx-server/Dockerfile
7-
ports:
8-
- 8081:80
2+
reverse-proxy:
3+
image: nginx:stable-alpine
94
networks:
10-
- network1
5+
- test-network
6+
volumes:
7+
- ./dist:/usr/share/nginx/html
118
healthcheck:
12-
test: [ "CMD", "curl", "-f", "http://localhost" ]
13-
interval: 30s
14-
timeout: 10s
15-
retries: 3
9+
test: [ "CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost" ]
10+
interval: 30s
11+
timeout: 5s
12+
retries: 3
13+
logging:
14+
driver: "none"
1615

1716
playwright:
18-
build:
19-
context: .
20-
dockerfile: ./dockerfiles/playwright/Dockerfile
21-
command: yarn run test:e2e:ci
17+
image: mcr.microsoft.com/playwright:v1.57.0-noble
2218
environment:
23-
BASE_URL: "http://nginx-server"
19+
BASE_URL: "http://reverse-proxy"
20+
WEBTEAM_UI_NPM_TOKEN: ${WEBTEAM_UI_NPM_TOKEN}
21+
CI: ${CI}
22+
working_dir: /var/www
2423
volumes:
25-
- ./test/snapshots:/var/www/test/snapshots
26-
- ./test-results:/var/www/test-results
24+
- .:/var/www
25+
command: sh -c "yarn install --immutable && yarn run test:ci"
2726
depends_on:
28-
nginx-server:
27+
reverse-proxy:
2928
condition: service_healthy
3029
networks:
31-
- network1
30+
- test-network
3231

3332
networks:
34-
network1:
33+
test-network:

dockerfiles/e2e-tests/Dockerfile

Lines changed: 0 additions & 36 deletions
This file was deleted.

dockerfiles/nginx-server/Dockerfile

Lines changed: 0 additions & 8 deletions
This file was deleted.

dockerfiles/playwright/Dockerfile

Lines changed: 0 additions & 13 deletions
This file was deleted.

package.json

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -137,10 +137,7 @@
137137
"generate-redirects": "node scripts/generate-redirect-pages.js",
138138
"lint": "next lint",
139139
"test": "playwright test test",
140-
"test:production": "playwright test test/production",
141-
"test:production:ci": "CI=true BASE_URL=https://kotlinlang.org playwright test test/production",
142-
"test:production:headed": "playwright test test/production --headed --project=chromium",
143-
"test:production:debug": "PWDEBUG=1 playwright test test/production --project=chromium",
140+
"test:ci": "playwright test test/production",
144141
"test:e2e": "playwright test test/e2e",
145142
"test:e2e:ci": "CI=true playwright test test/e2e",
146143
"test:e2e:headed": "playwright test test/e2e --headed",

scripts/test/run-e2e.sh

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)