This is an automated email from the ASF dual-hosted git repository.
vogievetsky pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git
The following commit(s) were added to refs/heads/master by this push:
new d11537b Improve UI E2E test usability (#10466)
d11537b is described below
commit d11537b5f77a2168b8e1f30ecf0a8835fc9d10fa
Author: Chi Cao Minh <[email protected]>
AuthorDate: Sat Oct 3 08:21:44 2020 -0700
Improve UI E2E test usability (#10466)
- Update playwright to latest version
- Provide environment variable to disable/enable headless mode
- Allow running E2E tests against any druid cluster running on standard
ports (tutorial-batch.spec.ts now uses an absolute instead of relative
path for the input data)
- Provide environment variable to change target web console port
- Druid setup does not need to download zookeeper
---
web-console/README.md | 24 ++-
web-console/e2e-tests/auto-compaction.spec.ts | 4 +-
.../e2e-tests/component/datasources/overview.ts | 6 +-
.../e2e-tests/component/ingestion/overview.ts | 4 +-
.../component/load-data/config/partition.ts | 2 +-
.../load-data/data-connector/data-connector.ts | 2 +-
.../load-data/data-connector/local-file.ts | 2 +-
.../component/load-data/data-connector/reindex.ts | 2 +-
.../e2e-tests/component/load-data/data-loader.ts | 36 +++--
web-console/e2e-tests/component/query/overview.ts | 6 +-
web-console/e2e-tests/reindexing.spec.ts | 4 +-
web-console/e2e-tests/tutorial-batch.spec.ts | 7 +-
web-console/e2e-tests/util/debug.ts | 2 +-
web-console/e2e-tests/util/druid.ts | 3 +-
web-console/e2e-tests/util/playwright.ts | 16 +-
web-console/e2e-tests/util/setup.ts | 6 +-
web-console/e2e-tests/util/table.ts | 9 +-
web-console/package-lock.json | 178 ++++++++++++---------
web-console/package.json | 2 +-
web-console/script/druid | 22 +--
20 files changed, 165 insertions(+), 172 deletions(-)
diff --git a/web-console/README.md b/web-console/README.md
index 255cae9..30881a1 100644
--- a/web-console/README.md
+++ b/web-console/README.md
@@ -23,7 +23,7 @@ This is the unified Druid web console that servers as a data
management layer fo
## How to watch and run for development
-1. You need to be withing the `web-console` directory
+1. You need to be within the `web-console` directory
2. Install the modules with `npm install`
3. Run `npm start` will start in development mode and will proxy druid
requests to `localhost:8888`
@@ -82,26 +82,24 @@ From the web-console directory:
3. Run end-to-end tests: `npm run test-e2e`
4. Stop druid cluster: `script/druid stop`
+If you already have a druid cluster running on the standard ports, the steps
to build/start/stop a druid cluster can
+be skipped.
+
### Debugging
#### Screenshots
`e2e-tests/util/debug.ts:saveScreenshotIfError()` is used to save a screenshot
of the web console
-when the test fails. For example, if `e2e-tests/tutotrial-batch.spec.ts`
fails, it will create
+when the test fails. For example, if `e2e-tests/tutorial-batch.spec.ts` fails,
it will create
`load-data-from-local-disk-error-screenshot.png`.
#### Disabling Headless Mode
-Disabling headless mode while running the tests can be helpful. One way of
doing this is by using
-`e2e-tests/util/playwright:createBrowserDebug()`. For example, the test can be
modified to change
-
-```
-import { createBrowserNormal as createBrowser } from './util/playwright'
-```
+Disabling headless mode while running the tests can be helpful. This can be
done via the `DRUID_E2E_TEST_HEADLESS`
+environment variable, which defaults to `true`.
-to
-
-```
-import { createBrowserDebug as createBrowser } from './util/playwright'`
-```
+#### Running Against Alternate Web Console
+The environment variable `DRUID_E2E_TEST_UNIFIED_CONSOLE_PORT` can be used to
target a web console running on a
+non-default port (i.e., not port `8888`). For example, this environment
variable can be used to target the
+development mode of the web console (started via `npm start`), which runs on
port `18081`.
\ No newline at end of file
diff --git a/web-console/e2e-tests/auto-compaction.spec.ts
b/web-console/e2e-tests/auto-compaction.spec.ts
index 68cd00b..85d1d9e 100644
--- a/web-console/e2e-tests/auto-compaction.spec.ts
+++ b/web-console/e2e-tests/auto-compaction.spec.ts
@@ -18,7 +18,7 @@
import axios from 'axios';
import path from 'path';
-import * as playwright from 'playwright-core';
+import * as playwright from 'playwright-chromium';
import { CompactionConfig } from './component/datasources/compaction';
import { Datasource } from './component/datasources/datasource';
@@ -29,7 +29,7 @@ import { COORDINATOR_URL } from './util/druid';
import { DRUID_EXAMPLES_QUICKSTART_TUTORIAL_DIR } from './util/druid';
import { UNIFIED_CONSOLE_URL } from './util/druid';
import { runIndexTask } from './util/druid';
-import { createBrowserNormal as createBrowser } from './util/playwright';
+import { createBrowser } from './util/playwright';
import { createPage } from './util/playwright';
import { retryIfJestAssertionError } from './util/retry';
import { waitTillWebConsoleReady } from './util/setup';
diff --git a/web-console/e2e-tests/component/datasources/overview.ts
b/web-console/e2e-tests/component/datasources/overview.ts
index 11f44b4..d3b7eca 100644
--- a/web-console/e2e-tests/component/datasources/overview.ts
+++ b/web-console/e2e-tests/component/datasources/overview.ts
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-import * as playwright from 'playwright-core';
+import * as playwright from 'playwright-chromium';
import { clickButton } from '../../util/playwright';
import { getLabeledInput } from '../../util/playwright';
@@ -61,7 +61,7 @@ export class DatasourcesOverview {
async getDatasources(): Promise<Datasource[]> {
await this.page.goto(this.baseUrl);
- await this.page.reload({ waitUntil: 'networkidle0' });
+ await this.page.reload({ waitUntil: 'networkidle' });
const data = await extractTable(this.page, 'div div.rt-tr-group',
'div.rt-td');
@@ -116,6 +116,6 @@ export class DatasourcesOverview {
const editActions = await this.page.$$('span[icon=wrench]');
editActions[index].click();
- await this.page.waitFor('ul.bp3-menu');
+ await this.page.waitForSelector('ul.bp3-menu');
}
}
diff --git a/web-console/e2e-tests/component/ingestion/overview.ts
b/web-console/e2e-tests/component/ingestion/overview.ts
index 2a0b96d..7c3b8cb 100644
--- a/web-console/e2e-tests/component/ingestion/overview.ts
+++ b/web-console/e2e-tests/component/ingestion/overview.ts
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-import * as playwright from 'playwright-core';
+import * as playwright from 'playwright-chromium';
import { extractTable } from '../../util/table';
@@ -50,7 +50,7 @@ export class IngestionOverview {
async getTasks(): Promise<IngestionTask[]> {
await this.page.goto(this.baseUrl);
- await this.page.reload({ waitUntil: 'networkidle0' });
+ await this.page.reload({ waitUntil: 'networkidle' });
const data = await extractTable(this.page, 'div.bottom-pane
div.rt-tr-group', 'div.rt-td');
diff --git a/web-console/e2e-tests/component/load-data/config/partition.ts
b/web-console/e2e-tests/component/load-data/config/partition.ts
index 51713c6..04e9d0e 100644
--- a/web-console/e2e-tests/component/load-data/config/partition.ts
+++ b/web-console/e2e-tests/component/load-data/config/partition.ts
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-import * as playwright from 'playwright-core';
+import * as playwright from 'playwright-chromium';
import { selectSuggestibleInput } from '../../../util/playwright';
import { getLabeledInput } from '../../../util/playwright';
diff --git
a/web-console/e2e-tests/component/load-data/data-connector/data-connector.ts
b/web-console/e2e-tests/component/load-data/data-connector/data-connector.ts
index 7112f26..bb7c55f 100644
--- a/web-console/e2e-tests/component/load-data/data-connector/data-connector.ts
+++ b/web-console/e2e-tests/component/load-data/data-connector/data-connector.ts
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-import * as playwright from 'playwright-core';
+import * as playwright from 'playwright-chromium';
import { clickButton } from '../../../util/playwright';
diff --git
a/web-console/e2e-tests/component/load-data/data-connector/local-file.ts
b/web-console/e2e-tests/component/load-data/data-connector/local-file.ts
index dfbaed5..fa28d85 100644
--- a/web-console/e2e-tests/component/load-data/data-connector/local-file.ts
+++ b/web-console/e2e-tests/component/load-data/data-connector/local-file.ts
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-import * as playwright from 'playwright-core';
+import * as playwright from 'playwright-chromium';
import { setLabeledInput } from '../../../util/playwright';
diff --git
a/web-console/e2e-tests/component/load-data/data-connector/reindex.ts
b/web-console/e2e-tests/component/load-data/data-connector/reindex.ts
index d519a5d..b3ab91e 100644
--- a/web-console/e2e-tests/component/load-data/data-connector/reindex.ts
+++ b/web-console/e2e-tests/component/load-data/data-connector/reindex.ts
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-import * as playwright from 'playwright-core';
+import * as playwright from 'playwright-chromium';
import { setLabeledInput } from '../../../util/playwright';
diff --git a/web-console/e2e-tests/component/load-data/data-loader.ts
b/web-console/e2e-tests/component/load-data/data-loader.ts
index 4d3c971..a0b64ff 100644
--- a/web-console/e2e-tests/component/load-data/data-loader.ts
+++ b/web-console/e2e-tests/component/load-data/data-loader.ts
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-import * as playwright from 'playwright-core';
+import * as playwright from 'playwright-chromium';
import { clickButton } from '../../util/playwright';
import { clickLabeledButton } from '../../util/playwright';
@@ -60,7 +60,8 @@ export class DataLoader {
}
private async start() {
- await this.page.click(`"${this.connector.name}"`);
+ const cardSelector =
`//*[contains(@class,"bp3-card")][p[contains(text(),"${this.connector.name}")]]`;
+ await this.page.click(cardSelector);
await clickButton(this.page, 'Connect data');
}
@@ -73,53 +74,54 @@ export class DataLoader {
private async validateConnect(validator: (preview: string) => void) {
const previewSelector = '.raw-lines';
- await this.page.waitFor(previewSelector);
+ await this.page.waitForSelector(previewSelector);
const preview = await this.page.$eval(previewSelector, el => (el as
HTMLTextAreaElement).value);
validator(preview!);
}
private async parseData() {
- await this.page.waitFor('.parse-data-table');
+ await this.page.waitForSelector('.parse-data-table');
await clickButton(this.page, 'Next: Parse time');
}
private async parseTime() {
- await this.page.waitFor('.parse-time-table');
+ await this.page.waitForSelector('.parse-time-table');
await clickButton(this.page, 'Next: Transform');
}
private async transform() {
- await this.page.waitFor('.transform-table');
+ await this.page.waitForSelector('.transform-table');
await clickButton(this.page, 'Next: Filter');
}
private async filter() {
- await this.page.waitFor('.filter-table');
+ await this.page.waitForSelector('.filter-table');
await clickButton(this.page, 'Next: Configure schema');
}
private async configureSchema(configureSchemaConfig: ConfigureSchemaConfig) {
- await this.page.waitFor('.schema-table');
+ await this.page.waitForSelector('.schema-table');
await this.applyConfigureSchemaConfig(configureSchemaConfig);
await clickButton(this.page, 'Next: Partition');
}
private async applyConfigureSchemaConfig(configureSchemaConfig:
ConfigureSchemaConfig) {
- const rollup = await this.page.$('//*[text()="Rollup"]/input');
- const rollupChecked = await rollup!.evaluate(el => (el as
HTMLInputElement).checked);
+ const rollupSelector = '//*[text()="Rollup"]';
+ const rollupInput = await this.page.$(`${rollupSelector}/input`);
+ const rollupChecked = await rollupInput!.evaluate(el => (el as
HTMLInputElement).checked);
if (rollupChecked !== configureSchemaConfig.rollup) {
- await rollup!.click();
+ await this.page.click(rollupSelector);
const confirmationDialogSelector =
'//*[contains(@class,"bp3-alert-body")]';
- await this.page.waitFor(confirmationDialogSelector);
+ await this.page.waitForSelector(confirmationDialogSelector);
await clickButton(this.page, 'Yes');
const statusMessageSelector = '.recipe-toaster';
- await this.page.waitFor(statusMessageSelector);
+ await this.page.waitForSelector(statusMessageSelector);
await this.page.click(`${statusMessageSelector} button`);
}
}
private async partition(partitionConfig: PartitionConfig) {
- await this.page.waitFor('div.load-data-view.partition');
+ await this.page.waitForSelector('div.load-data-view.partition');
await this.applyPartitionConfig(partitionConfig);
await clickButton(this.page, 'Next: Tune');
}
@@ -140,12 +142,12 @@ export class DataLoader {
}
private async tune() {
- await this.page.waitFor('div.load-data-view.tuning');
+ await this.page.waitForSelector('div.load-data-view.tuning');
await clickButton(this.page, 'Next: Publish');
}
private async publish(publishConfig: PublishConfig) {
- await this.page.waitFor('div.load-data-view.publish');
+ await this.page.waitForSelector('div.load-data-view.publish');
await this.applyPublishConfig(publishConfig);
await clickButton(this.page, 'Edit spec');
}
@@ -157,7 +159,7 @@ export class DataLoader {
}
private async editSpec() {
- await this.page.waitFor('div.load-data-view.spec');
+ await this.page.waitForSelector('div.load-data-view.spec');
await clickButton(this.page, 'Submit');
}
}
diff --git a/web-console/e2e-tests/component/query/overview.ts
b/web-console/e2e-tests/component/query/overview.ts
index 3175a6d..9e3c646 100644
--- a/web-console/e2e-tests/component/query/overview.ts
+++ b/web-console/e2e-tests/component/query/overview.ts
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-import * as playwright from 'playwright-core';
+import * as playwright from 'playwright-chromium';
import { clickButton } from '../../util/playwright';
import { setInput } from '../../util/playwright';
@@ -36,12 +36,12 @@ export class QueryOverview {
async runQuery(query: string): Promise<string[][]> {
await this.page.goto(this.baseUrl);
- await this.page.reload({ waitUntil: 'networkidle0' });
+ await this.page.reload({ waitUntil: 'networkidle' });
const input = await this.page.$('div.query-input textarea');
await setInput(input!, query);
await clickButton(this.page, 'Run');
- await this.page.waitFor('div.query-info');
+ await this.page.waitForSelector('div.query-info');
return await extractTable(this.page, 'div.query-output div.rt-tr-group',
'div.rt-td');
}
diff --git a/web-console/e2e-tests/reindexing.spec.ts
b/web-console/e2e-tests/reindexing.spec.ts
index b735578..d3a02c1 100644
--- a/web-console/e2e-tests/reindexing.spec.ts
+++ b/web-console/e2e-tests/reindexing.spec.ts
@@ -17,7 +17,7 @@
*/
import path from 'path';
-import * as playwright from 'playwright-core';
+import * as playwright from 'playwright-chromium';
import { DatasourcesOverview } from './component/datasources/overview';
import { IngestionOverview } from './component/ingestion/overview';
@@ -32,7 +32,7 @@ import { saveScreenshotIfError } from './util/debug';
import { DRUID_EXAMPLES_QUICKSTART_TUTORIAL_DIR } from './util/druid';
import { UNIFIED_CONSOLE_URL } from './util/druid';
import { runIndexTask } from './util/druid';
-import { createBrowserNormal as createBrowser } from './util/playwright';
+import { createBrowser } from './util/playwright';
import { createPage } from './util/playwright';
import { retryIfJestAssertionError } from './util/retry';
import { waitTillWebConsoleReady } from './util/setup';
diff --git a/web-console/e2e-tests/tutorial-batch.spec.ts
b/web-console/e2e-tests/tutorial-batch.spec.ts
index c655663..1fad5a9 100644
--- a/web-console/e2e-tests/tutorial-batch.spec.ts
+++ b/web-console/e2e-tests/tutorial-batch.spec.ts
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-import * as playwright from 'playwright-core';
+import * as playwright from 'playwright-chromium';
import { DatasourcesOverview } from './component/datasources/overview';
import { IngestionOverview } from './component/ingestion/overview';
@@ -28,8 +28,9 @@ import { LocalFileDataConnector } from
'./component/load-data/data-connector/loc
import { DataLoader } from './component/load-data/data-loader';
import { QueryOverview } from './component/query/overview';
import { saveScreenshotIfError } from './util/debug';
+import { DRUID_EXAMPLES_QUICKSTART_TUTORIAL_DIR } from './util/druid';
import { UNIFIED_CONSOLE_URL } from './util/druid';
-import { createBrowserNormal as createBrowser } from './util/playwright';
+import { createBrowser } from './util/playwright';
import { createPage } from './util/playwright';
import { retryIfJestAssertionError } from './util/retry';
import { waitTillWebConsoleReady } from './util/setup';
@@ -57,7 +58,7 @@ describe('Tutorial: Loading a file', () => {
const testName = 'load-data-from-local-disk-';
const datasourceName = testName + new Date().toISOString();
const dataConnector = new LocalFileDataConnector(page, {
- baseDirectory: 'quickstart/tutorial/',
+ baseDirectory: DRUID_EXAMPLES_QUICKSTART_TUTORIAL_DIR,
fileFilter: 'wikiticker-2015-09-12-sampled.json.gz',
});
const configureSchemaConfig = new ConfigureSchemaConfig({ rollup: false });
diff --git a/web-console/e2e-tests/util/debug.ts
b/web-console/e2e-tests/util/debug.ts
index f3c8e8a..9ea97a1 100644
--- a/web-console/e2e-tests/util/debug.ts
+++ b/web-console/e2e-tests/util/debug.ts
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-import * as playwright from 'playwright-core';
+import * as playwright from 'playwright-chromium';
export async function saveScreenshotIfError(
filenamePrefix: string,
diff --git a/web-console/e2e-tests/util/druid.ts
b/web-console/e2e-tests/util/druid.ts
index 87b5d41..62ff65d 100644
--- a/web-console/e2e-tests/util/druid.ts
+++ b/web-console/e2e-tests/util/druid.ts
@@ -19,7 +19,8 @@
import { execSync } from 'child_process';
import path from 'path';
-export const UNIFIED_CONSOLE_URL =
'http://localhost:8888/unified-console.html';
+const UNIFIED_CONSOLE_PORT =
process.env['DRUID_E2E_TEST_UNIFIED_CONSOLE_PORT'] || '8888';
+export const UNIFIED_CONSOLE_URL =
`http://localhost:${UNIFIED_CONSOLE_PORT}/unified-console.html`;
export const COORDINATOR_URL = 'http://localhost:8081';
const UTIL_DIR = __dirname;
diff --git a/web-console/e2e-tests/util/playwright.ts
b/web-console/e2e-tests/util/playwright.ts
index 1a421a9..732cae8 100644
--- a/web-console/e2e-tests/util/playwright.ts
+++ b/web-console/e2e-tests/util/playwright.ts
@@ -16,22 +16,16 @@
* limitations under the License.
*/
-import * as playwright from 'playwright-core';
+import * as playwright from 'playwright-chromium';
-const DEBUG = true;
+const TRUE = 'true';
const WIDTH = 1920;
const HEIGHT = 1080;
const PADDING = 128;
-export async function createBrowserNormal(): Promise<playwright.Browser> {
- return createBrowserInternal(!DEBUG);
-}
-
-export async function createBrowserDebug(): Promise<playwright.Browser> {
- return createBrowserInternal(DEBUG);
-}
-
-async function createBrowserInternal(debug: boolean):
Promise<playwright.Browser> {
+export async function createBrowser(): Promise<playwright.Browser> {
+ const headless = process.env['DRUID_E2E_TEST_HEADLESS'] || TRUE;
+ const debug = headless !== TRUE;
const launchOptions: any = {
args: [`--window-size=${WIDTH},${HEIGHT + PADDING}`],
};
diff --git a/web-console/e2e-tests/util/setup.ts
b/web-console/e2e-tests/util/setup.ts
index 081f9ba..cc35873 100644
--- a/web-console/e2e-tests/util/setup.ts
+++ b/web-console/e2e-tests/util/setup.ts
@@ -17,7 +17,7 @@
*/
import { UNIFIED_CONSOLE_URL } from './druid';
-import { createBrowserNormal as createBrowser } from './playwright';
+import { createBrowser } from './playwright';
import { createPage } from './playwright';
export async function waitTillWebConsoleReady() {
@@ -26,8 +26,8 @@ export async function waitTillWebConsoleReady() {
try {
const page = await createPage(browser);
await page.goto(UNIFIED_CONSOLE_URL);
- await page.waitFor('//*[contains(text(),"console will not function at the
moment")]', {
- visibility: 'hidden',
+ await page.waitForSelector('//*[contains(text(),"console will not function
at the moment")]', {
+ state: 'hidden',
});
} finally {
await browser.close();
diff --git a/web-console/e2e-tests/util/table.ts
b/web-console/e2e-tests/util/table.ts
index 9f0419a..ab115b6 100644
--- a/web-console/e2e-tests/util/table.ts
+++ b/web-console/e2e-tests/util/table.ts
@@ -16,7 +16,7 @@
* limitations under the License.
*/
-import * as playwright from 'playwright-core';
+import * as playwright from 'playwright-chromium';
/**
* Extracts an HTML table into a text representation.
@@ -29,10 +29,10 @@ export async function extractTable(
tableSelector: string,
rowSelector: string,
): Promise<string[][]> {
- await page.waitFor(tableSelector);
+ await page.waitForSelector(tableSelector);
return page.evaluate(
- (tableSelector, rowSelector) => {
+ ([tableSelector, rowSelector]) => {
const BLANK_VALUE = '\xa0';
const data = [];
const rows = document.querySelectorAll(tableSelector);
@@ -51,7 +51,6 @@ export async function extractTable(
}
return data;
},
- tableSelector,
- rowSelector,
+ [tableSelector, rowSelector],
);
}
diff --git a/web-console/package-lock.json b/web-console/package-lock.json
index 3693799..5c074e0 100644
--- a/web-console/package-lock.json
+++ b/web-console/package-lock.json
@@ -1635,6 +1635,16 @@
"integrity":
"sha512-wBlsw+8n21e6eTd4yVv8YD/E3xq0O6nNnJIquutAsFGE7EyMKz7W6RNT6BRu1SmdgmlCZ9tb0X+j+D6HGr8pZw==",
"dev": true
},
+ "@types/yauzl": {
+ "version": "2.9.1",
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.1.tgz",
+ "integrity":
"sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
"@webassemblyjs/ast": {
"version": "1.8.5",
"resolved":
"https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz",
@@ -2858,6 +2868,12 @@
}
}
},
+ "buffer-crc32": {
+ "version": "0.2.13",
+ "resolved":
"https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
+ "dev": true
+ },
"buffer-from": {
"version": "1.1.1",
"resolved":
"https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
@@ -4913,25 +4929,40 @@
}
},
"extract-zip": {
- "version": "1.6.7",
- "resolved":
"https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz",
- "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=",
+ "version": "2.0.1",
+ "resolved":
"https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+ "integrity":
"sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
"dev": true,
"requires": {
- "concat-stream": "1.6.2",
- "debug": "2.6.9",
- "mkdirp": "0.5.1",
- "yauzl": "2.4.1"
+ "@types/yauzl": "^2.9.1",
+ "debug": "^4.1.1",
+ "get-stream": "^5.1.0",
+ "yauzl": "^2.10.0"
},
"dependencies": {
"debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity":
"sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
+ "integrity":
"sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
"dev": true,
"requires": {
- "ms": "2.0.0"
+ "ms": "2.1.2"
+ }
+ },
+ "get-stream": {
+ "version": "5.2.0",
+ "resolved":
"https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity":
"sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
}
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity":
"sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
}
}
},
@@ -4998,9 +5029,9 @@
}
},
"fd-slicer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
- "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
"dev": true,
"requires": {
"pend": "~1.2.0"
@@ -7828,9 +7859,9 @@
}
},
"jpeg-js": {
- "version": "0.3.7",
- "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.7.tgz",
- "integrity":
"sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==",
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.2.tgz",
+ "integrity":
"sha512-+az2gi/hvex7eLTMTlbRLOhH6P6WFdk2ITI8HJsaH2VqYO0I594zXSYEP+tf4FW+8Cy68ScDXoAsQdyQanv3sw==",
"dev": true
},
"js-base64": {
@@ -9767,62 +9798,57 @@
}
},
"playwright-chromium": {
- "version": "0.11.1",
- "resolved":
"https://registry.npmjs.org/playwright-chromium/-/playwright-chromium-0.11.1.tgz",
- "integrity":
"sha512-7b9fdpMaEBDT/bazkfzHGiKGJ7+PzlVoxwnW94lIxV3uDUSSAHxkFwwD1ks1NZnvBQuTE9IksOP9hKYA1gby5A==",
+ "version": "1.4.2",
+ "resolved":
"https://registry.npmjs.org/playwright-chromium/-/playwright-chromium-1.4.2.tgz",
+ "integrity":
"sha512-Yj4QKRL0TB1oZ1InAhqmqoVgu1MeeYnKgwCyaEnA1+tjhYYcieINq4HO8bMMgUDHa/ccMWyHA8qyP9WEdz8v0A==",
"dev": true,
"requires": {
- "playwright-core": "=0.11.1"
- }
- },
- "playwright-core": {
- "version": "0.11.1",
- "resolved":
"https://registry.npmjs.org/playwright-core/-/playwright-core-0.11.1.tgz",
- "integrity":
"sha512-9xsSkXlglvHIAofyNInA1p3beOAOBMWHZgiuH99gX1R8VL6fTXgfWD7pIvt+rJhVMJWMDAyMXRo4TYtYtdspIg==",
- "dev": true,
- "requires": {
- "debug": "^4.1.0",
- "extract-zip": "^1.6.6",
- "https-proxy-agent": "^3.0.0",
- "jpeg-js": "^0.3.6",
- "pngjs": "^3.4.0",
+ "debug": "^4.1.1",
+ "extract-zip": "^2.0.1",
+ "https-proxy-agent": "^5.0.0",
+ "jpeg-js": "^0.4.2",
+ "mime": "^2.4.6",
+ "pngjs": "^5.0.0",
"progress": "^2.0.3",
- "proxy-from-env": "^1.0.0",
+ "proxy-from-env": "^1.1.0",
"rimraf": "^3.0.2",
- "uuid": "^3.4.0",
- "ws": "^6.1.0"
+ "ws": "^7.3.1"
},
"dependencies": {
+ "agent-base": {
+ "version": "6.0.1",
+ "resolved":
"https://registry.npmjs.org/agent-base/-/agent-base-6.0.1.tgz",
+ "integrity":
"sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg==",
+ "dev": true,
+ "requires": {
+ "debug": "4"
+ }
+ },
"debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity":
"sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz",
+ "integrity":
"sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==",
"dev": true,
"requires": {
- "ms": "^2.1.1"
+ "ms": "2.1.2"
}
},
"https-proxy-agent": {
- "version": "3.0.1",
- "resolved":
"https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz",
- "integrity":
"sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==",
+ "version": "5.0.0",
+ "resolved":
"https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
+ "integrity":
"sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
"dev": true,
"requires": {
- "agent-base": "^4.3.0",
- "debug": "^3.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
- "integrity":
"sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- }
+ "agent-base": "6",
+ "debug": "4"
}
},
+ "mime": {
+ "version": "2.4.6",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz",
+ "integrity":
"sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==",
+ "dev": true
+ },
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -9838,20 +9864,11 @@
"glob": "^7.1.3"
}
},
- "uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity":
"sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "dev": true
- },
"ws": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
- "integrity":
"sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
- "dev": true,
- "requires": {
- "async-limiter": "~1.0.0"
- }
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz",
+ "integrity":
"sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==",
+ "dev": true
}
}
},
@@ -9862,9 +9879,9 @@
"dev": true
},
"pngjs": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz",
- "integrity":
"sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz",
+ "integrity":
"sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==",
"dev": true
},
"popper.js": {
@@ -10686,9 +10703,9 @@
}
},
"proxy-from-env": {
- "version": "1.0.0",
- "resolved":
"https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz",
- "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=",
+ "version": "1.1.0",
+ "resolved":
"https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity":
"sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
"dev": true
},
"prr": {
@@ -15126,12 +15143,13 @@
}
},
"yauzl": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
- "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
"dev": true,
"requires": {
- "fd-slicer": "~1.0.1"
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
}
},
"yn": {
diff --git a/web-console/package.json b/web-console/package.json
index 6d132e9..72ce193 100644
--- a/web-console/package.json
+++ b/web-console/package.json
@@ -126,7 +126,7 @@
"license-checker": "^25.0.1",
"node-sass": "^4.13.1",
"node-sass-chokidar": "^1.4.0",
- "playwright-chromium": "^0.11.1",
+ "playwright-chromium": "^1.4.2",
"postcss-cli": "^6.1.3",
"postcss-loader": "^3.0.0",
"postcss-preset-env": "^6.7.0",
diff --git a/web-console/script/druid b/web-console/script/druid
index 81e1b79..e57a90f 100755
--- a/web-console/script/druid
+++ b/web-console/script/druid
@@ -50,25 +50,6 @@ function _get_druid_version() {
_get_maven_property_value "project.version"
}
-function _get_zookeeper_version() {
- _get_maven_property_value "zookeeper.version"
-}
-
-function _download_zookeeper() {
- local dest="$1"
- local zk_version
- zk_version="$(_get_zookeeper_version)"
- #zk_tar=apache-zookeeper-${zk_version}-bin # for zk 3.5.x
- zk_tar=zookeeper-${zk_version} # for zk 3.4.x
-
- _log "Downloading zookeeper"
- curl -s
"https://archive.apache.org/dist/zookeeper/zookeeper-${zk_version}/$zk_tar.tar.gz"
\
- | tar xz \
- && rm -rf "$dest" \
- && mv "$zk_tar" "$dest" \
- && rm -f "$zk_tar"
-}
-
function _build_distribution() {
_log "Building druid distribution"
@@ -109,8 +90,7 @@ DRUID_PID_FILE=".druid.pid"
function build() {
_log "Building druid"
- _build_distribution \
- && _download_zookeeper
"$(_get_code_root)/distribution/target/apache-druid-$(_get_druid_version)/zk"
+ _build_distribution
_log "Done building druid"
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]