Skip to content

Commit c6cb4a5

Browse files
Use web driver instead of selenium (#245)
- Implement "run on cluster" E2E test - Remove hacks required for the old E2E framework - Tests run much faster as well - Temporarily remove taking screenshots. We need to have a follow up task to use a richer result reporter such as https://webdriver.io/docs/allure-reporter/ Co-authored-by: Kartik Gupta <88345179+kartikgupta-db@users.noreply.github.com>
1 parent 5c6a4af commit c6cb4a5

File tree

23 files changed

+4177
-841
lines changed

23 files changed

+4177
-841
lines changed

.github/workflows/tests.yml

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ jobs:
6464
test-extension:
6565
name: Test VSCode Extension
6666
runs-on: ${{ inputs.os }}
67-
needs: [test-sdk]
6867

6968
env:
7069
VSCODE_TEST_VERSION: ${{ inputs.vscode-version }}
@@ -73,6 +72,10 @@ jobs:
7372
TEST_DEFAULT_CLUSTER_ID: ${{ secrets.TEST_DEFAULT_CLUSTER_ID }}
7473
BRICKS_ARCH: ${{ inputs.bricks_arch }}
7574

75+
defaults:
76+
run:
77+
shell: bash
78+
7679
steps:
7780
- uses: actions/checkout@v3
7881

@@ -82,6 +85,18 @@ jobs:
8285
node-version: ${{ inputs.node-version }}
8386
cache: "yarn"
8487

88+
- name: Cache wdio
89+
uses: actions/cache@v3
90+
with:
91+
path: /tmp/wdio-vscode-service
92+
key: ${{ inputs.bricks_arch }}-${{ inputs.vscode-version }}-wdio
93+
94+
- name: Cache VSCode unit test runner
95+
uses: actions/cache@v3
96+
with:
97+
path: /tmp/vscode-test-databricks
98+
key: ${{ inputs.bricks_arch }}-${{ inputs.vscode-version }}-vscode-test
99+
85100
- run: yarn install --immutable
86101

87102
- name: Prettier and Linting
@@ -116,20 +131,13 @@ jobs:
116131
working-directory: packages/databricks-vscode
117132

118133
- name: Integration Tests
119-
uses: nick-fields/retry@v2
120-
with:
121-
max_attempts: 3
122-
retry_wait_seconds: 2
123-
timeout_minutes: 10
124-
retry_on: any
125-
command: |
126-
cd packages/databricks-vscode
127-
yarn run test:integ
134+
run: yarn run test:integ
135+
working-directory: packages/databricks-vscode
128136

129137
- name: Upload test logs
130138
if: always()
131139
continue-on-error: true
132140
uses: actions/upload-artifact@v3
133141
with:
134142
name: test-logs ${{ join(inputs.*, ' - ') }} - ${{ github.event_name }}
135-
path: packages/databricks-vscode/src/test/logs
143+
path: packages/databricks-vscode/logs

packages/databricks-sdk-js/src/services/Repos.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* eslint-disable @typescript-eslint/naming-convention */
22
import {ApiClient} from "../api-client";
3-
import {ListRequest, ReposService, RepoInfo} from "../apis/repos";
3+
import {ListRequest, ReposService, RepoInfo, CreateRepo} from "../apis/repos";
44
// eslint-disable-next-line @typescript-eslint/no-unused-vars
55
import {context} from "../context";
66
import {Context} from "../context";
@@ -58,6 +58,16 @@ export class Repo {
5858
`${(await this.client.host).host}#folder/${this.id}`)();
5959
}
6060

61+
@withLogContext(ExposedLoggers.SDK)
62+
static async create(
63+
client: ApiClient,
64+
req: CreateRepo,
65+
@context context?: Context
66+
) {
67+
const repoService = new ReposService(client);
68+
return new Repo(client, await repoService.create(req, context));
69+
}
70+
6171
@withLogContext(ExposedLoggers.SDK)
6272
static async list(
6373
client: ApiClient,
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
**/logs/**
22
bin/**
3+
.wdio-vscode-service
4+
src/test/e2e/workspace/
5+
extension/

packages/databricks-vscode/.prettierignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,7 @@ out/
22
dist/
33
.vscode-test/
44
node_modules/
5-
package-lock.json
5+
package-lock.json
6+
.wdio-vscode-service/
7+
src/test/e2e/workspace/.databricks/
8+
extension/

packages/databricks-vscode/.vscodeignore

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,9 @@ src/**
1010
**/.eslintrc.json
1111
**/*.map
1212
**/*.ts
13-
scripts/**
13+
scripts/**
14+
.wdio-vscode-service/
15+
coverage/
16+
.nyc_output/
17+
logs/
18+
extension/

packages/databricks-vscode/package.json

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -543,10 +543,9 @@
543543
"fix": "eslint src --ext ts --fix && prettier . --write",
544544
"test:lint": "eslint src --ext ts && prettier . -c",
545545
"test:unit": "yarn run build && node ./out/test/runTest.js",
546-
"test:integ:prepare": "CODE_VERSION=1.69.1 && yarn run package && ts-node src/test/vscode-extension-tester-patch/cli.ts get-vscode --code_version $CODE_VERSION --storage /tmp/vscode-test-databricks && ts-node src/test/vscode-extension-tester-patch/cli.ts get-chromedriver --code_version $CODE_VERSION --storage /tmp/vscode-test-databricks",
547-
"test:integ:install-vsix": "ts-node src/test/vscode-extension-tester-patch/cli.ts install-vsix --storage /tmp/vscode-test-databricks -f databricks-vscode*.vsix -e /tmp/databricks-vscode-test-extensions",
548-
"test:integ:run": "yarn run build && node out/test/e2e/scripts/e2e.js -e /tmp/databricks-vscode-test-extensions --storage /tmp/vscode-test-databricks --code_settings src/test/e2e/settings.json 'out/**/*.e2e.js'",
549-
"test:integ": "yarn run test:integ:prepare && yarn run test:integ:install-vsix && yarn run test:integ:run",
546+
"test:integ:prepare": "yarn run package && rm -rf extension && mkdir -p extension && unzip databricks*.vsix -d extension",
547+
"test:integ:run": "wdio run src/test/e2e/wdio.conf.ts",
548+
"test:integ": "yarn run test:integ:prepare && yarn run test:integ:run",
550549
"test:cov": "nyc yarn run test:unit",
551550
"test": "yarn run test:lint && yarn run test:unit",
552551
"clean": "rm -rf node_modules out .vscode-test",
@@ -555,7 +554,6 @@
555554
"dependencies": {
556555
"@databricks/databricks-sdk": "workspace:^",
557556
"@databricks/databricks-vscode-types": "workspace:^",
558-
"@types/triple-beam": "^1.3.2",
559557
"@vscode/debugadapter": "^1.58.0",
560558
"@vscode/webview-ui-toolkit": "^1.2.0",
561559
"ansi-to-html": "^0.7.2",
@@ -572,11 +570,17 @@
572570
"@types/node": "^18.11.10",
573571
"@types/sinonjs__fake-timers": "^8.1.2",
574572
"@types/tmp": "^0.2.3",
573+
"@types/triple-beam": "^1.3.2",
575574
"@types/vscode": "^1.69.1",
576575
"@types/yargs": "^17.0.15",
577576
"@typescript-eslint/eslint-plugin": "^5.45.0",
578577
"@typescript-eslint/parser": "^5.45.0",
579578
"@vscode/test-electron": "^2.2.0",
579+
"@wdio/cli": "^7.27.0",
580+
"@wdio/local-runner": "^7.27.0",
581+
"@wdio/mocha-framework": "^7.26.0",
582+
"@wdio/spec-reporter": "^7.26.0",
583+
"@wdio/types": "^7.26.0",
580584
"esbuild": "^0.15.16",
581585
"eslint": "^8.28.0",
582586
"fs-extra": "^11.1.0",
@@ -590,7 +594,9 @@
590594
"ts-node": "^10.9.1",
591595
"typescript": "^4.9.3",
592596
"vsce": "^2.14.0",
593-
"vscode-extension-tester": "5.1.x",
597+
"wdio-video-reporter": "^3.3.0",
598+
"wdio-vscode-service": "^4.2.1",
599+
"winston": "^3.8.2",
594600
"yargs": "^17.6.2"
595601
},
596602
"nyc": {
@@ -611,4 +617,4 @@
611617
],
612618
"report-dir": "coverage"
613619
}
614-
}
620+
}

packages/databricks-vscode/src/sync/CodeSynchronizer.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export class CodeSynchronizer implements Disposable {
5757

5858
async start(syncType: "full" | "incremental") {
5959
this._state = "IN_PROGRESS";
60+
this._onDidChangeStateEmitter.fire(this._state);
6061
const task = new SyncTask(
6162
this.connection,
6263
this.cli,

packages/databricks-vscode/src/test/PeriodicRunner.ts

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

0 commit comments

Comments
 (0)