From 829247c2d2c1a5ac35cee4c356cce8d718727d06 Mon Sep 17 00:00:00 2001 From: Vipul Mathur Date: Thu, 21 Jan 2021 01:47:39 +0530 Subject: [PATCH 01/10] Use legacy resolver in pip to fix broken build (#5309) Fixes #5300 and fixes #5307 There have been upstream (`python:37-slim` image) changes that bring in `pip` version 20.3.1, which makes new `2020-resolver` the default. Due to that, un-resolvable dependency conflicts in `requirements_all_ds.txt` now cause the build to fail. This is a workaround until the package versions can be updated to work with the new pip resolver. --- Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Dockerfile b/Dockerfile index f213d86e59..dad74716f1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -79,6 +79,9 @@ WORKDIR /app ENV PIP_DISABLE_PIP_VERSION_CHECK=1 ENV PIP_NO_CACHE_DIR=1 +# Use legacy resolver to work around broken build due to resolver changes in pip +ENV PIP_USE_DEPRECATED=legacy-resolver + # We first copy only the requirements file, to avoid rebuilding on every file # change. COPY requirements.txt requirements_bundles.txt requirements_dev.txt requirements_all_ds.txt ./ From 4ec96caac5d1b4726aadc3d7aeba2aa2ab16bb86 Mon Sep 17 00:00:00 2001 From: Patrick Yang Date: Wed, 20 Jan 2021 19:40:53 -0800 Subject: [PATCH 02/10] Encrypt alert notification destinations (#5317) --- ...d7d747033183_encrypt_alert_destinations.py | 64 ++++++++++++++++++ redash/cli/database.py | 66 ++++++++++--------- redash/models/__init__.py | 9 ++- 3 files changed, 107 insertions(+), 32 deletions(-) create mode 100644 migrations/versions/d7d747033183_encrypt_alert_destinations.py diff --git a/migrations/versions/d7d747033183_encrypt_alert_destinations.py b/migrations/versions/d7d747033183_encrypt_alert_destinations.py new file mode 100644 index 0000000000..252e5bc225 --- /dev/null +++ b/migrations/versions/d7d747033183_encrypt_alert_destinations.py @@ -0,0 +1,64 @@ +"""encrypt alert destinations + +Revision ID: d7d747033183 +Revises: e5c7a4e2df4d +Create Date: 2020-12-14 21:42:48.661684 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql +from sqlalchemy.sql import table +from sqlalchemy_utils.types.encrypted.encrypted_type import FernetEngine + +from redash import settings +from redash.utils.configuration import ConfigurationContainer +from redash.models.base import key_type +from redash.models.types import ( + EncryptedConfiguration, + Configuration, +) + + +# revision identifiers, used by Alembic. +revision = 'd7d747033183' +down_revision = 'e5c7a4e2df4d' +branch_labels = None +depends_on = None + + +def upgrade(): + op.add_column( + "notification_destinations", + sa.Column("encrypted_options", postgresql.BYTEA(), nullable=True) + ) + + # copy values + notification_destinations = table( + "notification_destinations", + sa.Column("id", key_type("NotificationDestination"), primary_key=True), + sa.Column( + "encrypted_options", + ConfigurationContainer.as_mutable( + EncryptedConfiguration( + sa.Text, settings.DATASOURCE_SECRET_KEY, FernetEngine + ) + ), + ), + sa.Column("options", ConfigurationContainer.as_mutable(Configuration)), + ) + + conn = op.get_bind() + for dest in conn.execute(notification_destinations.select()): + conn.execute( + notification_destinations.update() + .where(notification_destinations.c.id == dest.id) + .values(encrypted_options=dest.options) + ) + + op.drop_column("notification_destinations", "options") + op.alter_column("notification_destinations", "encrypted_options", nullable=False) + + +def downgrade(): + pass diff --git a/redash/cli/database.py b/redash/cli/database.py index 777a04637b..546e813a91 100644 --- a/redash/cli/database.py +++ b/redash/cli/database.py @@ -9,7 +9,7 @@ from sqlalchemy_utils.types.encrypted.encrypted_type import FernetEngine from redash import settings -from redash.models.base import Column +from redash.models.base import Column, key_type from redash.models.types import EncryptedConfiguration from redash.utils.configuration import ConfigurationContainer @@ -27,7 +27,7 @@ def _wait_for_db_connection(db): retried = True - + def is_db_empty(): from redash.models import db @@ -86,36 +86,40 @@ def reencrypt(old_secret, new_secret, show_sql): logging.basicConfig() logging.getLogger("sqlalchemy.engine").setLevel(logging.INFO) - table_for_select = sqlalchemy.Table( - "data_sources", - sqlalchemy.MetaData(), - Column("id", db.Integer, primary_key=True), - Column( - "encrypted_options", - ConfigurationContainer.as_mutable( - EncryptedConfiguration(db.Text, old_secret, FernetEngine) + def _reencrypt_for_table(table_name, orm_name): + table_for_select = sqlalchemy.Table( + table_name, + sqlalchemy.MetaData(), + Column("id", key_type(orm_name), primary_key=True), + Column( + "encrypted_options", + ConfigurationContainer.as_mutable( + EncryptedConfiguration(db.Text, old_secret, FernetEngine) + ), ), - ), - ) - table_for_update = sqlalchemy.Table( - "data_sources", - sqlalchemy.MetaData(), - Column("id", db.Integer, primary_key=True), - Column( - "encrypted_options", - ConfigurationContainer.as_mutable( - EncryptedConfiguration(db.Text, new_secret, FernetEngine) + ) + table_for_update = sqlalchemy.Table( + table_name, + sqlalchemy.MetaData(), + Column("id", key_type(orm_name), primary_key=True), + Column( + "encrypted_options", + ConfigurationContainer.as_mutable( + EncryptedConfiguration(db.Text, new_secret, FernetEngine) + ), ), - ), - ) - - update = table_for_update.update() - data_sources = db.session.execute(select([table_for_select])) - for ds in data_sources: - stmt = update.where(table_for_update.c.id == ds["id"]).values( - encrypted_options=ds["encrypted_options"] ) - db.session.execute(stmt) - data_sources.close() - db.session.commit() + update = table_for_update.update() + selected_items = db.session.execute(select([table_for_select])) + for item in selected_items: + stmt = update.where(table_for_update.c.id == item["id"]).values( + encrypted_options=item["encrypted_options"] + ) + db.session.execute(stmt) + + selected_items.close() + db.session.commit() + + _reencrypt_for_table("data_sources", "DataSource") + _reencrypt_for_table("notification_destinations", "NotificationDestination") diff --git a/redash/models/__init__.py b/redash/models/__init__.py index 564a944755..abc9c18792 100644 --- a/redash/models/__init__.py +++ b/redash/models/__init__.py @@ -1353,7 +1353,14 @@ class NotificationDestination(BelongsToOrgMixin, db.Model): user = db.relationship(User, backref="notification_destinations") name = Column(db.String(255)) type = Column(db.String(255)) - options = Column(ConfigurationContainer.as_mutable(Configuration)) + options = Column( + "encrypted_options", + ConfigurationContainer.as_mutable( + EncryptedConfiguration( + db.Text, settings.DATASOURCE_SECRET_KEY, FernetEngine + ) + ), + ) created_at = Column(db.DateTime(True), default=db.func.now()) __tablename__ = "notification_destinations" From bb42e92cd05c328fc216e878981427fc269ec15c Mon Sep 17 00:00:00 2001 From: Jiajie Zhong Date: Thu, 21 Jan 2021 11:45:16 +0800 Subject: [PATCH 03/10] Remove unnecessary space in rq log (#5345) --- redash/tasks/queries/execution.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/redash/tasks/queries/execution.py b/redash/tasks/queries/execution.py index b3722438ae..24ffea929d 100644 --- a/redash/tasks/queries/execution.py +++ b/redash/tasks/queries/execution.py @@ -248,7 +248,7 @@ def _annotate_query(self, query_runner): def _log_progress(self, state): logger.info( - "job=execute_query state=%s query_hash=%s type=%s ds_id=%d " + "job=execute_query state=%s query_hash=%s type=%s ds_id=%d " "job_id=%s queue=%s query_id=%s username=%s", state, self.query_hash, From e71ccf5de559b6e5342e1ca1d09a509d61ea2f0f Mon Sep 17 00:00:00 2001 From: Arik Fraimovich Date: Thu, 21 Jan 2021 10:55:52 -0800 Subject: [PATCH 04/10] Fix: add a merge migration to solve multi head issue (#5364) * Add unit test to test for multi-head migrations issue * Add merge migration --- .../89bc7873a3e0_fix_multiple_heads.py | 24 +++++++++++++++++++ tests/test_migrations.py | 20 ++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 migrations/versions/89bc7873a3e0_fix_multiple_heads.py create mode 100644 tests/test_migrations.py diff --git a/migrations/versions/89bc7873a3e0_fix_multiple_heads.py b/migrations/versions/89bc7873a3e0_fix_multiple_heads.py new file mode 100644 index 0000000000..54c744fbcd --- /dev/null +++ b/migrations/versions/89bc7873a3e0_fix_multiple_heads.py @@ -0,0 +1,24 @@ +"""fix_multiple_heads + +Revision ID: 89bc7873a3e0 +Revises: 0ec979123ba4, d7d747033183 +Create Date: 2021-01-21 18:11:04.312259 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '89bc7873a3e0' +down_revision = ('0ec979123ba4', 'd7d747033183') +branch_labels = None +depends_on = None + + +def upgrade(): + pass + + +def downgrade(): + pass diff --git a/tests/test_migrations.py b/tests/test_migrations.py new file mode 100644 index 0000000000..9a05d4ba8f --- /dev/null +++ b/tests/test_migrations.py @@ -0,0 +1,20 @@ +import os +from alembic.config import Config +from alembic.script import ScriptDirectory + + +def test_only_single_head_revision_in_migrations(): + """ + If multiple developers are working on migrations and one of them is merged before the + other you might end up with multiple heads (multiple revisions with the same down_revision). + + This makes sure that there is only a single head revision in the migrations directory. + + Adopted from https://blog.jerrycodes.com/multiple-heads-in-alembic-migrations/. + """ + config = Config(os.path.join("migrations", 'alembic.ini')) + config.set_main_option('script_location', "migrations") + script = ScriptDirectory.from_config(config) + + # This will raise if there are multiple heads + script.get_current_head() \ No newline at end of file From 23a279f318b40b9535a91e080fb864c96a7729a8 Mon Sep 17 00:00:00 2001 From: Rafael Wendel Date: Fri, 22 Jan 2021 21:03:15 -0300 Subject: [PATCH 05/10] Fix for Cypress flakiness generated by param_spec (#5349) --- .../integration/dashboard/parameter_spec.js | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/client/cypress/integration/dashboard/parameter_spec.js b/client/cypress/integration/dashboard/parameter_spec.js index 9abac3b111..008175abec 100644 --- a/client/cypress/integration/dashboard/parameter_spec.js +++ b/client/cypress/integration/dashboard/parameter_spec.js @@ -1,4 +1,3 @@ -import { each } from "lodash"; import { createQueryAndAddWidget, editDashboard } from "../../support/dashboard"; import { dragParam, expectParamOrder } from "../../support/parameters"; @@ -41,27 +40,32 @@ describe("Dashboard Parameters", () => { .click(); }; - const saveMappingOptions = (close = true) => { - cy.getByTestId("EditParamMappingPopover") + const saveMappingOptions = (closeMappingMenu = false) => { + return cy + .getByTestId("EditParamMappingPopover") .filter(":visible") + .as("Popover") .within(() => { + // This is needed to grant the element will have finished loading + // eslint-disable-next-line cypress/no-unnecessary-waiting + cy.wait(200); cy.contains("button", "OK").click(); + }) + .then(() => { + if (closeMappingMenu) { + cy.contains("button", "OK").click(); + } + return cy.get("@Popover").should("not.be.visible"); }); - - cy.getByTestId("EditParamMappingPopover").should("not.be.visible"); - - if (close) { - cy.contains("button", "OK").click(); - } }; const setWidgetParametersToDashboard = parameters => { - each(parameters, ({ name: paramName }, i) => { + cy.wrap(parameters).each(({ name: paramName }, i) => { cy.getByTestId(`EditParamMappingButton-${paramName}`).click(); cy.getByTestId("NewDashboardParameterOption") .filter(":visible") .click(); - saveMappingOptions(i === parameters.length - 1); + return saveMappingOptions(i === parameters.length - 1); }); }; From b0b1d6c81c8dd324a96db35dd592277a7a327db9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Jan 2021 13:44:11 -0300 Subject: [PATCH 06/10] Bump dompurify from 2.0.8 to 2.0.17 in /viz-lib (#5326) Bumps [dompurify](https://github.com/cure53/DOMPurify) from 2.0.8 to 2.0.17. - [Release notes](https://github.com/cure53/DOMPurify/releases) - [Commits](https://github.com/cure53/DOMPurify/compare/2.0.8...2.0.17) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- viz-lib/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/viz-lib/package-lock.json b/viz-lib/package-lock.json index c46799845f..fdce0e9ede 100644 --- a/viz-lib/package-lock.json +++ b/viz-lib/package-lock.json @@ -5133,9 +5133,9 @@ } }, "dompurify": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.0.8.tgz", - "integrity": "sha512-vIOSyOXkMx81ghEalh4MLBtDHMx1bhKlaqHDMqM2yeitJ996SLOk5mGdDpI9ifJAgokred8Rmu219fX4OltqXw==" + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.0.17.tgz", + "integrity": "sha512-nNwwJfW55r8akD8MSFz6k75bzyT2y6JEa1O3JrZFBf+Y5R9JXXU4OsRl0B9hKoPgHTw2b7ER5yJ5Md97MMUJPg==" }, "domutils": { "version": "1.5.1", From 911f39800632c3de4e4d339006f7e0c8e186742e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Jan 2021 16:52:14 -0300 Subject: [PATCH 07/10] Bump bl from 1.2.2 to 1.2.3 in /viz-lib (#5257) Bumps [bl](https://github.com/rvagg/bl) from 1.2.2 to 1.2.3. - [Release notes](https://github.com/rvagg/bl/releases) - [Commits](https://github.com/rvagg/bl/compare/v1.2.2...v1.2.3) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- viz-lib/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/viz-lib/package-lock.json b/viz-lib/package-lock.json index fdce0e9ede..bfdf453a93 100644 --- a/viz-lib/package-lock.json +++ b/viz-lib/package-lock.json @@ -3722,9 +3722,9 @@ } }, "bl": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", - "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", "requires": { "readable-stream": "^2.3.5", "safe-buffer": "^5.1.1" From 2f1394a6f4eb7bdf257210a7d47614527124fb73 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Jan 2021 21:49:32 -0300 Subject: [PATCH 08/10] Bump axios from 0.19.0 to 0.21.1 (#5366) Bumps [axios](https://github.com/axios/axios) from 0.19.0 to 0.21.1. - [Release notes](https://github.com/axios/axios/releases) - [Changelog](https://github.com/axios/axios/blob/v0.21.1/CHANGELOG.md) - [Commits](https://github.com/axios/axios/compare/v0.19.0...v0.21.1) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 75 +++++++++++++++++++++++++---------------------- package.json | 2 +- 2 files changed, 41 insertions(+), 36 deletions(-) diff --git a/package-lock.json b/package-lock.json index b2ce133823..4caf93d9d6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4767,6 +4767,35 @@ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "dev": true, + "requires": { + "follow-redirects": "1.5.10" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "dev": true, + "requires": { + "debug": "=3.1.0" + } + } + } + }, "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", @@ -4838,6 +4867,12 @@ "esprima": "^4.0.0" } }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -6394,40 +6429,11 @@ "dev": true }, "axios": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", - "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", "requires": { - "follow-redirects": "1.5.10", - "is-buffer": "^2.0.2" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", - "requires": { - "debug": "=3.1.0" - } - }, - "is-buffer": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } + "follow-redirects": "^1.10.0" } }, "axios-auth-refresh": { @@ -12551,8 +12557,7 @@ "follow-redirects": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", - "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==", - "dev": true + "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==" }, "font-atlas": { "version": "2.1.0", diff --git a/package.json b/package.json index 24ee34712d..fcfeded3e1 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "@redash/viz": "file:viz-lib", "ace-builds": "^1.4.12", "antd": "^4.4.3", - "axios": "^0.19.0", + "axios": "^0.21.1", "axios-auth-refresh": "^3.0.0", "bootstrap": "^3.3.7", "classnames": "^2.2.6", From 49536de1ed8331928cb6139d5aac2a2ebe780fc7 Mon Sep 17 00:00:00 2001 From: Rafael Wendel Date: Thu, 28 Jan 2021 14:48:36 -0300 Subject: [PATCH 09/10] Updated axios (#5371) --- package-lock.json | 60 ++++++++++++++--------------------------------- 1 file changed, 17 insertions(+), 43 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4caf93d9d6..cd4bb5c578 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5036,24 +5036,21 @@ "dependencies": { "axios": { "version": "0.19.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", - "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "bundled": true, "requires": { "follow-redirects": "1.5.10" } }, "follow-redirects": { "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "bundled": true, "requires": { "debug": "=3.1.0" }, "dependencies": { "debug": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "bundled": true, "requires": { "ms": "2.0.0" } @@ -5062,13 +5059,11 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "bundled": true }, "use-debounce": { "version": "3.4.2", - "resolved": "https://registry.npmjs.org/use-debounce/-/use-debounce-3.4.2.tgz", - "integrity": "sha512-rW44wZaFPh3XiwUzGBA0JRuklpbfKO/szU/5CYD2Q/erLmCem63lJ650p3a+NJE6S+g0rulKtBOfa/3rw/GN+Q==" + "bundled": true } } }, @@ -12791,8 +12786,7 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true, - "optional": true + "bundled": true }, "aproba": { "version": "1.2.0", @@ -12810,13 +12804,11 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -12829,18 +12821,15 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "concat-map": { "version": "0.0.1", - "bundled": true, - "optional": true + "bundled": true }, "console-control-strings": { "version": "1.1.0", - "bundled": true, - "optional": true + "bundled": true }, "core-util-is": { "version": "1.0.2", @@ -12943,8 +12932,7 @@ }, "inherits": { "version": "2.0.3", - "bundled": true, - "optional": true + "bundled": true }, "ini": { "version": "1.3.5", @@ -12954,7 +12942,6 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -12967,20 +12954,17 @@ "minimatch": { "version": "3.0.4", "bundled": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true, - "optional": true + "bundled": true }, "minipass": { "version": "2.3.5", "bundled": true, - "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -12997,7 +12981,6 @@ "mkdirp": { "version": "0.5.1", "bundled": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -13070,8 +13053,7 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true, - "optional": true + "bundled": true }, "object-assign": { "version": "4.1.1", @@ -13081,7 +13063,6 @@ "once": { "version": "1.4.0", "bundled": true, - "optional": true, "requires": { "wrappy": "1" } @@ -13157,8 +13138,7 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true, - "optional": true + "bundled": true }, "safer-buffer": { "version": "2.1.2", @@ -13188,7 +13168,6 @@ "string-width": { "version": "1.0.2", "bundled": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -13206,7 +13185,6 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -13245,13 +13223,11 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, - "optional": true + "bundled": true }, "yallist": { "version": "3.0.3", - "bundled": true, - "optional": true + "bundled": true } } }, @@ -26192,7 +26168,6 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, - "optional": true, "requires": { "is-extglob": "^2.1.1" } @@ -26208,8 +26183,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "optional": true + "dev": true }, "readdirp": { "version": "3.5.0", From 04edf16ed42cdf9d005e7a512162cee7ca298c9c Mon Sep 17 00:00:00 2001 From: Rafael Wendel Date: Thu, 28 Jan 2021 15:02:36 -0300 Subject: [PATCH 10/10] Increased waiting time to avoid flakiness (#5370) --- client/cypress/integration/dashboard/parameter_spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/cypress/integration/dashboard/parameter_spec.js b/client/cypress/integration/dashboard/parameter_spec.js index 008175abec..dd62e773d4 100644 --- a/client/cypress/integration/dashboard/parameter_spec.js +++ b/client/cypress/integration/dashboard/parameter_spec.js @@ -48,7 +48,7 @@ describe("Dashboard Parameters", () => { .within(() => { // This is needed to grant the element will have finished loading // eslint-disable-next-line cypress/no-unnecessary-waiting - cy.wait(200); + cy.wait(500); cy.contains("button", "OK").click(); }) .then(() => {