diff --git a/app/client/cypress.json b/app/client/cypress.json index 7954e7b968..44a49e355e 100644 --- a/app/client/cypress.json +++ b/app/client/cypress.json @@ -4,10 +4,9 @@ "requestTimeout": 21000, "responseTimeout": 20000, "pageLoadTimeout": 30000, - "video": true, "videoUploadOnPasses": false, "videoCompression": false, - "reporter": "mochawesome", + "numTestsKeptInMemory": 10, "reporterOptions": { "reportDir": "results", "overwrite": false, diff --git a/app/client/cypress/fixtures/buttonRecaptchaDsl.json b/app/client/cypress/fixtures/buttonRecaptchaDsl.json index b5605cdd56..3584023de3 100644 --- a/app/client/cypress/fixtures/buttonRecaptchaDsl.json +++ b/app/client/cypress/fixtures/buttonRecaptchaDsl.json @@ -1,87 +1,121 @@ { - "dsl": { - "widgetName": "MainContainer", - "backgroundColor": "none", - "rightColumn": 1056, - "snapColumns": 64, - "detachFromLayout": true, - "widgetId": "0", - "topRow": 0, - "bottomRow": 800, - "containerStyle": "none", - "snapRows": 125, - "parentRowSpace": 1, - "type": "CANVAS_WIDGET", - "canExtend": true, - "version": 52, - "minHeight": 780, - "parentColumnSpace": 1, - "dynamicBindingPathList": [], - "leftColumn": 0, - "children": [ - { - "isVisible": true, - "animateLoading": true, - "text": "Submit", - "buttonColor": "#03B365", - "buttonVariant": "PRIMARY", - "placement": "CENTER", - "widgetName": "Button1", - "isDisabled": false, - "isDefaultClickDisabled": true, - "recaptchaType": "V3", - "version": 1, - "type": "BUTTON_WIDGET", - "hideCard": false, - "displayName": "Button", - "key": "b3xxd5tj9s", - "iconSVG": "/static/media/icon.cca02633.svg", - "widgetId": "56yla62kkw", - "renderMode": "CANVAS", - "isLoading": false, - "parentColumnSpace": 16.3125, - "parentRowSpace": 10, - "leftColumn": 19, - "rightColumn": 35, - "topRow": 10, - "bottomRow": 14, - "parentId": "0" - }, - { - "isVisible": true, - "text": "{{Button1.recaptchaToken}}", - "fontSize": "PARAGRAPH", - "fontStyle": "BOLD", - "textAlign": "LEFT", - "textColor": "#231F20", - "truncateButtonColor": "#FFC13D", - "widgetName": "Text1", - "shouldScroll": false, - "shouldTruncate": false, - "version": 1, - "animateLoading": true, - "type": "TEXT_WIDGET", - "hideCard": false, - "displayName": "Text", - "key": "6cg9oqz0if", - "iconSVG": "/static/media/icon.97c59b52.svg", - "widgetId": "iymasdikx5", - "renderMode": "CANVAS", - "isLoading": false, - "parentColumnSpace": 16.3125, - "parentRowSpace": 10, - "leftColumn": 19, - "rightColumn": 35, - "topRow": 26, - "bottomRow": 30, - "parentId": "0", - "dynamicBindingPathList": [ - { - "key": "text" - } - ], - "dynamicTriggerPathList": [] - } - ] - } -} \ No newline at end of file + "dsl": { + "widgetName": "MainContainer", + "backgroundColor": "none", + "rightColumn": 4896, + "snapColumns": 64, + "detachFromLayout": true, + "widgetId": "0", + "topRow": 0, + "bottomRow": 890, + "containerStyle": "none", + "snapRows": 125, + "parentRowSpace": 1, + "type": "CANVAS_WIDGET", + "canExtend": true, + "version": 59, + "minHeight": 1292, + "dynamicTriggerPathList": [], + "parentColumnSpace": 1, + "dynamicBindingPathList": [], + "leftColumn": 0, + "children": [ + { + "resetFormOnClick": false, + "boxShadow": "none", + "widgetName": "Button1", + "buttonColor": "{{appsmith.theme.colors.primaryColor}}", + "displayName": "Button", + "iconSVG": "/static/media/icon.cca026338f1c8eb6df8ba03d084c2fca.svg", + "searchTags": [ + "click", + "submit" + ], + "topRow": 17, + "bottomRow": 21, + "parentRowSpace": 10, + "type": "BUTTON_WIDGET", + "hideCard": false, + "animateLoading": true, + "parentColumnSpace": 8.234375, + "dynamicTriggerPathList": [], + "leftColumn": 24, + "dynamicBindingPathList": [ + { + "key": "buttonColor" + }, + { + "key": "borderRadius" + } + ], + "googleRecaptchaKey": "", + "text": "Submit", + "isDisabled": false, + "key": "vdh3tlu92l", + "isDeprecated": false, + "rightColumn": 40, + "isDefaultClickDisabled": true, + "widgetId": "ns40tqapo7", + "isVisible": true, + "recaptchaType": "V3", + "version": 1, + "parentId": "0", + "renderMode": "CANVAS", + "isLoading": false, + "disabledWhenInvalid": false, + "borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}", + "buttonVariant": "PRIMARY", + "placement": "CENTER" + }, + { + "widgetName": "Text1", + "displayName": "Text", + "iconSVG": "/static/media/icon.97c59b523e6f70ba6f40a10fc2c7c5b5.svg", + "searchTags": [ + "typography", + "paragraph", + "label" + ], + "topRow": 24, + "bottomRow": 54, + "parentRowSpace": 10, + "type": "TEXT_WIDGET", + "hideCard": false, + "animateLoading": true, + "overflow": "NONE", + "fontFamily": "{{appsmith.theme.fontFamily.appFont}}", + "parentColumnSpace": 8.234375, + "dynamicTriggerPathList": [], + "leftColumn": 9, + "dynamicBindingPathList": [ + { + "key": "fontFamily" + }, + { + "key": "borderRadius" + }, + { + "key": "text" + } + ], + "shouldTruncate": false, + "truncateButtonColor": "#FFC13D", + "text": "{{Button1.recaptchaToken}}", + "key": "ebojaag8n4", + "isDeprecated": false, + "rightColumn": 56, + "textAlign": "LEFT", + "widgetId": "wav6hy7wyk", + "isVisible": true, + "fontStyle": "BOLD", + "textColor": "#231F20", + "version": 1, + "parentId": "0", + "renderMode": "CANVAS", + "isLoading": false, + "borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}", + "fontSize": "1rem" + } + ] + } +} diff --git a/app/client/cypress/fixtures/datasources.json b/app/client/cypress/fixtures/datasources.json index e5bf016a86..c219494351 100644 --- a/app/client/cypress/fixtures/datasources.json +++ b/app/client/cypress/fixtures/datasources.json @@ -1,47 +1,54 @@ { - "mongo-authenticationAuthtype": "SCRAM-SHA-1", - "mongo-host": "localhost", - "mongo-port": 28017, - "mongo-databaseName": "mongo_samples", - "mongo-uri": "mongodb+srv://localhost:localhost@mockdb.net/mock?retryWrites=true&w=majority", - "postgres-host": "localhost", - "postgres-port": 5432, - "postgres-databaseName": "fakeapi", - "postgres-username": "docker", - "postgres-password": "docker", - "mysql-host": "localhost", - "mysql-port": 3306, - "mysql-databaseName": "fakeapi", - "mysql-username": "root", - "mysql-password": "root", + "mongo-authenticationAuthtype": "SCRAM-SHA-1", + "mongo-host": "localhost", + "mongo-port": 28017, + "mongo-databaseName": "mongo_samples", + "mongo-uri": "mongodb+srv://localhost:localhost@mockdb.net/mock?retryWrites=true&w=majority", + + "postgres-host": "localhost", + "postgres-port": 5432, + "postgres-databaseName": "fakeapi", + "postgres-username": "docker", + "postgres-password": "docker", + + "mysql-host": "localhost", + "mysql-port": 3306, + "mysql-databaseName": "fakeapi", + "mysql-username": "root", + "mysql-password": "root", + "mssql-host": "localhost", - "mssql-port": 1433, - "mssql-databaseName": "fakeapi", - "mssql-username": "SA", - "mssql-password": "Root$123", + "mssql-port": 1433, + "mssql-databaseName": "fakeapi", + "mssql-username": "SA", + "mssql-password": "Root$123", + "arango-host": "localhost", - "arango-port": 8529, - "arango-databaseName": "fakeapi", - "arango-username": "root", - "arango-password": "Arango$123", + "arango-port": 8529, + "arango-databaseName": "fakeapi", + "arango-username": "root", + "arango-password": "Arango$123", + "redshift-host": "localhost", - "redshift-port": 5439, - "redshift-databaseName": "fakeapi", - "redshift-username": "root", - "redshift-password": "Redshift$123", - "smtp-host":"localhost", - "smtp-port":"25", - "smtp-username":"root", - "smtp-password":"root", - "restapi-url": "https://my-json-server.typicode.com/typicode/demo/posts", - "connection-type": "Replica set", - "database-url": "appsmith-f9fe4.firebaseio.com", - "projectID": "appsmith-f9fe4", - "serviceAccCredentials": "testdata", - "mockHostAddress":"fake-api.cvuydmurdlas.us-east-1.rds.amazonaws.com", - "mockDatabaseName": "fakeapi", - "mockDatabaseUsername": "fakeapi", - "mockDatabasePassword": "LimitedAccess123#", - "readonly":"readonly", - "authenticatedApiUrl": "https://fakeapi.com" + "redshift-port": 5439, + "redshift-databaseName": "fakeapi", + "redshift-username": "root", + "redshift-password": "Redshift$123", + + "smtp-host":"localhost", + "smtp-port":"25", + "smtp-username":"root", + "smtp-password":"root", + + "restapi-url": "https://my-json-server.typicode.com/typicode/demo/posts", + "connection-type": "Replica set", + "database-url": "appsmith-f9fe4.firebaseio.com", + "projectID": "appsmith-f9fe4", + "serviceAccCredentials": "testdata", + "mockHostAddress":"fake-api.cvuydmurdlas.us-east-1.rds.amazonaws.com", + "mockDatabaseName": "fakeapi", + "mockDatabaseUsername": "fakeapi", + "mockDatabasePassword": "LimitedAccess123#", + "readonly":"readonly", + "authenticatedApiUrl": "https://fakeapi.com" } diff --git a/app/client/cypress/integration/Smoke_TestSuite/ClientSideTests/Binding/BindButton_Text_WithRecaptcha_spec.js b/app/client/cypress/integration/Smoke_TestSuite/ClientSideTests/Binding/BindButton_Text_WithRecaptcha_spec.js index 026deb3e74..b2b56147fc 100644 --- a/app/client/cypress/integration/Smoke_TestSuite/ClientSideTests/Binding/BindButton_Text_WithRecaptcha_spec.js +++ b/app/client/cypress/integration/Smoke_TestSuite/ClientSideTests/Binding/BindButton_Text_WithRecaptcha_spec.js @@ -1,5 +1,11 @@ const dsl = require("../../../../fixtures/buttonRecaptchaDsl.json"); const testdata = require("../../../../fixtures/testdata.json"); +import { ObjectsRegistry } from "../../../../support/Objects/Registry"; + +const locator = ObjectsRegistry.CommonLocators, + ee = ObjectsRegistry.EntityExplorer, + agHelper = ObjectsRegistry.AggregateHelper, + propPane = ObjectsRegistry.PropertyPane; describe("Binding the Button widget with Text widget using Recpatcha v3", function() { before(() => { @@ -7,28 +13,17 @@ describe("Binding the Button widget with Text widget using Recpatcha v3", functi }); it.only("1. Validate the Button binding with Text Widget with Recaptcha token with empty key", function() { - cy.get("button") - .contains("Submit") - .should("be.visible") - .click({ force: true }); - cy.SearchEntityandOpen("Text1"); - cy.get(".t--draggable-textwidget .bp3-ui-text").should("be.visible"); - cy.get(".t--draggable-textwidget .bp3-ui-text").should("have.value", ""); - cy.SearchEntityandOpen("Button1"); - cy.get(".t--property-control-googlerecaptchaversion .bp3-popover-target") - .last() - .should("be.visible") - .click({ force: true }); - cy.get(".t--dropdown-option:contains('reCAPTCHA v2')").click({ - force: true, - }); - cy.get("button") - .contains("Submit") - .should("be.visible") - .click({ force: true }); - cy.SearchEntityandOpen("Text1"); - cy.get(".t--draggable-textwidget .bp3-ui-text").should("be.visible"); - cy.get(".t--draggable-textwidget .bp3-ui-text").should("have.value", ""); + agHelper.ClickButton("Submit"); + agHelper + .GetText(locator._widgetInCanvas("textwidget") + " span") + .then(($text) => expect($text).to.be.empty); + ee.SelectEntityByName("Button1"); + agHelper.SelectDropdownList("Google reCAPTCHA Version", "reCAPTCHA v2"); + agHelper.ClickButton("Submit"); + agHelper + .GetText(locator._widgetInCanvas("textwidget") + " span") + .then(($text) => expect($text).to.be.empty); + agHelper.SelectDropdownList("Google reCAPTCHA Version", "reCAPTCHA v3"); }); //This test to be enabled once the product bug is fixed @@ -70,78 +65,39 @@ describe("Binding the Button widget with Text widget using Recpatcha v3", functi }); }); - it.only("2. Validate the Button binding with Text Widget with Recaptcha Token with v2Key", function() { - cy.get("button") - .contains("Submit") - .should("be.visible") - .click({ force: true }); - cy.testCodeMirrorLast(testdata.v2Key); - cy.SearchEntityandOpen("Text1"); - cy.get(".t--draggable-textwidget span") - .last() - .invoke("text") - .then((x) => { - cy.log(x); - expect(x).to.be.empty; - }); - cy.SearchEntityandOpen("Button1"); - cy.get(".t--property-control-googlerecaptchaversion .bp3-popover-target") - .last() - .should("be.visible") - .click({ force: true }); - cy.get(".t--dropdown-option:contains('reCAPTCHA v2')").click({ - force: true, - }); - cy.get("button") - .contains("Submit") - .should("be.visible") - .click({ force: true }); - cy.SearchEntityandOpen("Text1"); - cy.wait(3000); - cy.get(".t--draggable-textwidget span") - .last() - .invoke("text") - .then((x) => { - cy.log(x); - expect(x).not.to.be.empty; - }); + it.only("2. Validate the Button binding with Text Widget with Recaptcha Token with v2Key & upward compatibilty doesnt work", function() { + ee.SelectEntityByName("Button1"); + propPane.UpdatePropertyFieldValue("Google reCAPTCHA Key", testdata.v2Key); + agHelper.ClickButton("Submit"); + agHelper.Sleep(); + agHelper + .GetText(locator._widgetInCanvas("textwidget") + " span") + .then(($text) => expect($text).to.be.empty); + ee.SelectEntityByName("Button1"); + agHelper.SelectDropdownList("Google reCAPTCHA Version", "reCAPTCHA v2"); + agHelper.ClickButton("Submit"); + agHelper.Sleep(); + agHelper + .GetText(locator._widgetInCanvas("textwidget") + " span") + .then(($text) => expect($text).not.to.be.empty); + agHelper.SelectDropdownList("Google reCAPTCHA Version", "reCAPTCHA v3"); + agHelper.ClickButton("Submit"); + agHelper.Sleep(); }); - it.only("3. Validate the Button binding with Text Widget with Recaptcha Token with v3Key", function() { - cy.get("button") - .contains("Submit") - .should("be.visible") - .click({ force: true }); - cy.testCodeMirrorLast(testdata.v3Key); - cy.SearchEntityandOpen("Text1"); - cy.get(".t--draggable-textwidget span") - .last() - .invoke("text") - .then((x) => { - cy.log(x); - expect(x).not.to.be.empty; - }); - cy.SearchEntityandOpen("Button1"); - cy.get(".t--property-control-googlerecaptchaversion .bp3-popover-target") - .last() - .should("be.visible") - .click({ force: true }); - cy.get(".t--dropdown-option:contains('reCAPTCHA v2')").click({ - force: true, - }); - cy.get("button") - .contains("Submit") - .should("be.visible") - .click({ force: true }); - cy.SearchEntityandOpen("Text1"); - cy.wait(3000); - cy.get(".t--draggable-textwidget span") - .last() - .invoke("text") - .then((x) => { - cy.log(x); - expect(x).not.to.be.empty; - }); + it.only("3. Validate the Button binding with Text Widget with Recaptcha Token with v3Key & v2key for backward compatible", function() { + ee.SelectEntityByName("Button1"); + propPane.UpdatePropertyFieldValue("Google reCAPTCHA Key", testdata.v3Key); + agHelper.SelectDropdownList("Google reCAPTCHA Version", "reCAPTCHA v3"); + agHelper.ClickButton("Submit"); + agHelper.Sleep(); + agHelper + .GetText(locator._widgetInCanvas("textwidget") + " span") + .then(($text) => expect($text).not.to.be.empty); + ee.SelectEntityByName("Button1"); + agHelper.SelectDropdownList("Google reCAPTCHA Version", "reCAPTCHA v2"); + agHelper.ClickButton("Submit"); + //agHelper.ValidateToastMessage("Google Re-Captcha token generation failed!"); toast doesnt come when run in CI! }); //This test to be enabled once the product bug is fixed diff --git a/app/client/cypress/integration/Smoke_TestSuite/ClientSideTests/Binding/Table_Property_ToggleJs_With_Binding_spec.js b/app/client/cypress/integration/Smoke_TestSuite/ClientSideTests/Binding/Table_Property_ToggleJs_With_Binding_spec.js index e126f583f3..2db4294f6b 100644 --- a/app/client/cypress/integration/Smoke_TestSuite/ClientSideTests/Binding/Table_Property_ToggleJs_With_Binding_spec.js +++ b/app/client/cypress/integration/Smoke_TestSuite/ClientSideTests/Binding/Table_Property_ToggleJs_With_Binding_spec.js @@ -134,7 +134,7 @@ describe("Table Widget property pane feature validation", function() { .first() .click({ force: true }); // eslint-disable-next-line cypress/no-unnecessary-waiting - cy.wait(1000); + cy.wait(2000); cy.toggleJsAndUpdateWithIndex("tabledata", testdata.bindingTextColor, 6); cy.wait("@updateLayout"); diff --git a/app/client/cypress/integration/Smoke_TestSuite/ServerSideTests/GenerateCRUD/MySQL_Spec.ts b/app/client/cypress/integration/Smoke_TestSuite/ServerSideTests/GenerateCRUD/MySQL_Spec.ts index 88dfdfb135..5849074949 100644 --- a/app/client/cypress/integration/Smoke_TestSuite/ServerSideTests/GenerateCRUD/MySQL_Spec.ts +++ b/app/client/cypress/integration/Smoke_TestSuite/ServerSideTests/GenerateCRUD/MySQL_Spec.ts @@ -1,6 +1,6 @@ import { ObjectsRegistry } from "../../../../support/Objects/Registry"; -let guid: any, dsName: any, newStoreSecret: any; +let dsName: any, newStoreSecret: any; let agHelper = ObjectsRegistry.AggregateHelper, ee = ObjectsRegistry.EntityExplorer, @@ -12,16 +12,12 @@ let agHelper = ObjectsRegistry.AggregateHelper, deployMode = ObjectsRegistry.DeployMode; describe("Validate MySQL Generate CRUD with JSON Form", () => { - before(() => { - dataSources.StartDataSourceRoutes(); - }); - - beforeEach(function() { - if (Cypress.env("MySQL") === 0) { - cy.log("MySQL DB is not found. Using intercept"); - dataSources.StartInterceptRoutesForMySQL(); - } else cy.log("MySQL DB is found, hence using actual DB"); - }); + // beforeEach(function() { + // if (Cypress.env("MySQL") === 0) { + // cy.log("MySQL DB is not found. Using intercept"); + // //dataSources.StartInterceptRoutesForMySQL(); + // } else cy.log("MySQL DB is found, hence using actual DB"); + // }); it("1. Create DS & then Add new Page and generate CRUD template using created datasource", () => { dataSources.CreateDataSource("MySql"); @@ -569,7 +565,6 @@ describe("Validate MySQL Generate CRUD with JSON Form", () => { //agHelper.VerifyEvaluatedValue(tableCreateQuery); dataSources.RunQueryNVerifyResponseViews(); - agHelper.ActionContextMenuWithInPane("Delete"); ee.ExpandCollapseEntity("DATASOURCES"); ee.ExpandCollapseEntity(dsName); ee.ActionContextMenuByEntityName(dsName, "Refresh"); @@ -577,14 +572,7 @@ describe("Validate MySQL Generate CRUD with JSON Form", () => { }); it("19. Verify application does not break when user runs the query with wrong table name", function() { - let deleteTblQuery = "DROP TABLE Stores;"; - dataSources.NavigateFromActiveDS(dsName, true); - agHelper.GetNClick(dataSources._templateMenu); - agHelper.RenameWithInPane("DropStores"); - dataSources.EnterQuery(deleteTblQuery); - agHelper.FocusElement(locator._codeMirrorTextArea); - //agHelper.VerifyEvaluatedValue(tableCreateQuery); - + ee.SelectEntityByName("DropStores", "QUERIES/JS"); dataSources.RunQuery(false); agHelper .GetText(dataSources._queryError) diff --git a/app/client/cypress/integration/Smoke_TestSuite/ServerSideTests/OnLoadTests/JSOnLoad2_Spec.ts b/app/client/cypress/integration/Smoke_TestSuite/ServerSideTests/OnLoadTests/JSOnLoad2_Spec.ts index a84a83a09b..14eefc20af 100644 --- a/app/client/cypress/integration/Smoke_TestSuite/ServerSideTests/OnLoadTests/JSOnLoad2_Spec.ts +++ b/app/client/cypress/integration/Smoke_TestSuite/ServerSideTests/OnLoadTests/JSOnLoad2_Spec.ts @@ -5,12 +5,8 @@ const agHelper = ObjectsRegistry.AggregateHelper, ee = ObjectsRegistry.EntityExplorer, dataSources = ObjectsRegistry.DataSources, jsEditor = ObjectsRegistry.JSEditor, - table = ObjectsRegistry.Table, - locator = ObjectsRegistry.CommonLocators, homePage = ObjectsRegistry.HomePage, - apiPage = ObjectsRegistry.ApiPage, - deployMode = ObjectsRegistry.DeployMode, - propPane = ObjectsRegistry.PropertyPane; + deployMode = ObjectsRegistry.DeployMode; describe("JSObjects OnLoad Actions tests", function() { before(() => { @@ -203,5 +199,6 @@ describe("JSObjects OnLoad Actions tests", function() { else agHelper.Sleep(3000); deployMode.NavigateBacktoEditor(); agHelper.ClickButton("No"); + agHelper.Sleep(2000); } }); diff --git a/app/client/cypress/integration/Smoke_TestSuite/ServerSideTests/Params/ExecutionParams_spec.js b/app/client/cypress/integration/Smoke_TestSuite/ServerSideTests/Params/ExecutionParams_spec.js index 9e04d9907d..7f436f7437 100644 --- a/app/client/cypress/integration/Smoke_TestSuite/ServerSideTests/Params/ExecutionParams_spec.js +++ b/app/client/cypress/integration/Smoke_TestSuite/ServerSideTests/Params/ExecutionParams_spec.js @@ -105,7 +105,7 @@ describe("API Panel Test Functionality", function() { 200, ); // eslint-disable-next-line cypress/no-unnecessary-waiting - cy.wait(5000); + cy.wait(3000); // Assert statically bound "users" data cy.readTabledataPublish("1", "1").then((cellData) => { expect(cellData).to.be.equal("Test user 8"); @@ -123,7 +123,7 @@ describe("API Panel Test Functionality", function() { 200, ); // eslint-disable-next-line cypress/no-unnecessary-waiting - cy.wait(5000); + cy.wait(3000); // Assert dynamically bound "todos" data cy.readTabledataPublish("0", "1").then((cellData) => { expect(cellData).to.be.equal("Test user 7"); diff --git a/app/client/cypress/plugins/index.js b/app/client/cypress/plugins/index.js index a85773c838..4221822926 100644 --- a/app/client/cypress/plugins/index.js +++ b/app/client/cypress/plugins/index.js @@ -4,6 +4,8 @@ const fs = require("fs"); const path = require("path"); const dotenv = require("dotenv"); const chalk = require("chalk"); +// const _ = require("lodash"); +// const del = require("del"); const cypressLogToOutput = require("cypress-log-to-output"); //const { isFileExist } = require("cy-verify-downloads"); const { @@ -36,6 +38,21 @@ module.exports = (on, config) => { }); }; +// module.exports = (on, config) => { +// on("after:spec", (spec, results) => { +// if (results && results.video) { +// // Do we have failures for any retry attempts? +// const failures = _.some(results.tests, (test) => { +// return _.some(test.attempts, { state: "failed" }); +// }); +// if (!failures) { +// // delete the video if the spec passed and no tests retried +// return del(results.video); +// } +// } +// }); +// }; + module.exports = (on, config) => { // on("task", { // isFileExist, diff --git a/app/client/package.json b/app/client/package.json index c98a99e3c9..b6bb87aebd 100644 --- a/app/client/package.json +++ b/app/client/package.json @@ -240,7 +240,7 @@ "compression-webpack-plugin": "^10.0.0", "cra-bundle-analyzer": "^0.1.0", "cy-verify-downloads": "^0.0.5", - "cypress": "8.7.0", + "cypress": "9.7.0", "cypress-file-upload": "^4.1.1", "cypress-image-snapshot": "^4.0.1", "cypress-multi-reporters": "^1.2.4", diff --git a/app/client/yarn.lock b/app/client/yarn.lock index 3e25ada323..0cdaec145c 100644 --- a/app/client/yarn.lock +++ b/app/client/yarn.lock @@ -1480,6 +1480,11 @@ classnames "^2.2" tslib "~1.13.0" +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + "@craco/craco@^7.0.0-alpha.3": version "7.0.0-alpha.3" resolved "https://registry.npmjs.org/@craco/craco/-/craco-7.0.0-alpha.3.tgz" @@ -1594,9 +1599,9 @@ resolved "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-1.0.0.tgz" integrity sha512-RkYG5KiGNX0fJ5YoI0f4Wfq2Yo74D25Hru4fxTOioYdQvHBxcrrtTTyT5Ozzh2ejcNrhFy7IEts2WyEY7yi5yw== -"@cypress/request@^2.88.6": +"@cypress/request@^2.88.10": version "2.88.10" - resolved "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz" + resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.10.tgz#b66d76b07f860d3a4b8d7a0604d020c662752cce" integrity sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg== dependencies: aws-sign2 "~0.7.0" @@ -3407,10 +3412,10 @@ resolved "https://registry.npmjs.org/@types/showdown/-/showdown-1.9.4.tgz" integrity sha512-50ehC3IAijfkvoNqmQ+VL73S7orOxmAK8ljQAFBv8o7G66lAZyxQj1L3BAv2dD86myLXI+sgKP1kcxAaxW356w== -"@types/sinonjs__fake-timers@^6.0.2": - version "6.0.4" - resolved "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz" - integrity sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A== +"@types/sinonjs__fake-timers@8.1.1": + version "8.1.1" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz#b49c2c70150141a15e0fa7e79cf1f92a72934ce3" + integrity sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g== "@types/sizzle@^2.3.2": version "2.3.2" @@ -4828,7 +4833,7 @@ buffer-indexof-polyfill@~1.0.0: resolved "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz" integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== -buffer@^5.1.0, buffer@^5.5.0: +buffer@^5.1.0, buffer@^5.5.0, buffer@^5.6.0: version "5.7.1" resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -5162,14 +5167,14 @@ cli-spinners@^2.5.0, cli-spinners@^2.6.1: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== -cli-table3@~0.6.0: - version "0.6.1" - resolved "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.1.tgz" - integrity sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA== +cli-table3@~0.6.1: + version "0.6.2" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.2.tgz#aaf5df9d8b5bf12634dc8b3040806a0c07120d2a" + integrity sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw== dependencies: string-width "^4.2.0" optionalDependencies: - colors "1.4.0" + "@colors/colors" "1.5.0" cli-truncate@^2.1.0: version "2.1.0" @@ -5294,11 +5299,6 @@ colorette@^2.0.16, colorette@^2.0.17: resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== -colors@1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" @@ -5924,24 +5924,25 @@ cypress-xpath@^1.4.0: version "1.6.0" resolved "https://registry.npmjs.org/cypress-xpath/-/cypress-xpath-1.6.0.tgz" -cypress@8.7.0: - version "8.7.0" - resolved "https://registry.npmjs.org/cypress/-/cypress-8.7.0.tgz" - integrity sha512-b1bMC3VQydC6sXzBMFnSqcvwc9dTZMgcaOzT0vpSD+Gq1yFc+72JDWi55sfUK5eIeNLAtWOGy1NNb6UlhMvB+Q== +cypress@9.7.0: + version "9.7.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-9.7.0.tgz#bf55b2afd481f7a113ef5604aa8b693564b5e744" + integrity sha512-+1EE1nuuuwIt/N1KXRR2iWHU+OiIt7H28jJDyyI4tiUftId/DrXYEwoDa5+kH2pki1zxnA0r6HrUGHV5eLbF5Q== dependencies: - "@cypress/request" "^2.88.6" + "@cypress/request" "^2.88.10" "@cypress/xvfb" "^1.2.4" "@types/node" "^14.14.31" - "@types/sinonjs__fake-timers" "^6.0.2" + "@types/sinonjs__fake-timers" "8.1.1" "@types/sizzle" "^2.3.2" arch "^2.2.0" blob-util "^2.0.2" bluebird "^3.7.2" + buffer "^5.6.0" cachedir "^2.3.0" chalk "^4.1.0" check-more-types "^2.24.0" cli-cursor "^3.1.0" - cli-table3 "~0.6.0" + cli-table3 "~0.6.1" commander "^5.1.0" common-tags "^1.8.0" dayjs "^1.10.4" @@ -5960,16 +5961,15 @@ cypress@8.7.0: listr2 "^3.8.3" lodash "^4.17.21" log-symbols "^4.0.0" - minimist "^1.2.5" + minimist "^1.2.6" ospath "^1.2.2" pretty-bytes "^5.6.0" proxy-from-env "1.0.0" - ramda "~0.27.1" request-progress "^3.0.0" + semver "^7.3.2" supports-color "^8.1.1" tmp "~0.2.1" untildify "^4.0.0" - url "^0.11.0" yauzl "^2.10.0" damerau-levenshtein@^1.0.7: @@ -12219,10 +12219,6 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" - punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" @@ -12258,10 +12254,6 @@ qs@~6.5.2: version "6.5.2" resolved "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz" -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" - queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" @@ -12286,11 +12278,6 @@ ramda@^0.25.0: version "0.25.0" resolved "https://registry.npmjs.org/ramda/-/ramda-0.25.0.tgz" -ramda@~0.27.1: - version "0.27.2" - resolved "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz" - integrity sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA== - randombytes@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" @@ -15115,13 +15102,6 @@ url-search-params-polyfill@^8.0.0: version "8.1.0" resolved "https://registry.npmjs.org/url-search-params-polyfill/-/url-search-params-polyfill-8.1.0.tgz" -url@^0.11.0: - version "0.11.0" - resolved "https://registry.npmjs.org/url/-/url-0.11.0.tgz" - dependencies: - punycode "1.3.2" - querystring "0.2.0" - use-composed-ref@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda"