diff --git a/.circleci/config.yml b/.circleci/config.yml index a76e9c671cc06..79d39ca39045b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -202,11 +202,14 @@ jobs: test_and_build_console: docker: - image: hasura/graphql-engine-console-builder:v0.3 + environment: + CYPRESS_KEY: 983be0db-0f19-40cc-bfc4-194fcacd85e1 - image: circleci/postgres:10-alpine environment: POSTGRES_USER: gql_test POSTGRES_DB: gql_test working_directory: ~/graphql-engine + parallelism: 4 steps: - checkout - attach_workspace: diff --git a/.circleci/test-console.sh b/.circleci/test-console.sh index 2458a4b0b0a80..640ba5577416c 100755 --- a/.circleci/test-console.sh +++ b/.circleci/test-console.sh @@ -47,4 +47,7 @@ export URL_PREFIX=/ # test console npm run dev & +# wait for console to build +sleep 60 +# run console tests npm run test diff --git a/console/cypress.json b/console/cypress.json index 33cfde3725c9e..096084cceafaf 100644 --- a/console/cypress.json +++ b/console/cypress.json @@ -2,12 +2,13 @@ "baseUrl": "http://localhost:3000", "env": { "BASE_URL": "http://localhost:3000", - "TEST_MODE": "cli", + "TEST_MODE": "parallel", "MIGRATE_URL": "http://localhost:9693/apis/migrate" }, "ignoreTestFiles": ["*spec.js", "validators.js", "utils.js"], "viewportWidth": 1280, "viewportHeight": 720, "chromeWebSecurity": false, - "video": false + "video": false, + "projectId": "5yiuic" } diff --git a/console/cypress/integration/test_complete.js b/console/cypress/integration/test_complete.js deleted file mode 100644 index 2dfe66e6a6733..0000000000000 --- a/console/cypress/integration/test_complete.js +++ /dev/null @@ -1,51 +0,0 @@ -import { setMetaData } from './validators/validators'; - -import { runMigrationModeTests } from './data/migration-mode/test'; -import { runCreateTableTests } from './data/create-table/test'; -import { runInsertBrowseTests } from './data/insert-browse/test'; -import { runModifyTableTests } from './data/modify/test'; -import { runPermissionsTests } from './data/permissions/test'; -import { runRelationshipsTests } from './data/relationships/test'; -import { runViewsTest } from './data/views/test'; -import { runRawSQLTests } from './data/raw-sql/test'; -import { run404Test } from './data/404/test'; - -import { runCreateTriggerTests } from './events/create-trigger/test'; - -import { runApiExplorerTests } from './api-explorer/graphql/test'; - -const setup = () => { - it('Visit the index route', () => { - // Wait for the server to start - cy.wait(60000); - // Visit the index route - cy.visit('/data/schema/public'); - cy.wait(7000); - // Get and set validation metadata - setMetaData(); - }); -}; - -describe('Setup route', setup); - -runMigrationModeTests(); - -runCreateTriggerTests(); - -runCreateTableTests(); - -runInsertBrowseTests(); - -runModifyTableTests(); - -runRelationshipsTests(); - -runPermissionsTests(); - -runViewsTest(); - -runRawSQLTests(); - -runApiExplorerTests(); - -run404Test(); diff --git a/console/package-lock.json b/console/package-lock.json index 1ce250b23f38e..e6fafab54e831 100644 --- a/console/package-lock.json +++ b/console/package-lock.json @@ -1011,9 +1011,9 @@ "dev": true }, "async": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.1.4.tgz", - "integrity": "sha1-LSFgx3iAMuTdbL4lAvH5osj2zeQ=", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.4.0.tgz", + "integrity": "sha1-SZAgDxjqW4N8LMT4wDGmmFw4VhE=", "dev": true, "requires": { "lodash": "^4.14.0" @@ -2371,15 +2371,6 @@ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "dev": true, - "requires": { - "hoek": "2.x.x" - } - }, "bootstrap-loader": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/bootstrap-loader/-/bootstrap-loader-2.2.0.tgz", @@ -3379,15 +3370,6 @@ "which": "^1.2.9" } }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "dev": true, - "requires": { - "boom": "2.x.x" - } - }, "crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -3584,9 +3566,9 @@ "dev": true }, "cypress": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-3.0.2.tgz", - "integrity": "sha512-HoP5FWj2fqtMndKC0Qnc7Xy0v55dx/PQ5uLaKIL9h505H45uFMsc+HR5Qxw24rXaUKaS3oVY5UJaVw9YA2EtLw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-3.1.0.tgz", + "integrity": "sha512-UqLbXgHvM8Y6Y+roHrepZMWcyMN5u4KcjpTbJTZi0d5O2Prvtqmnpoky7a4C65q4oRQXeSc6cBZUhxJkhU4pbQ==", "dev": true, "requires": { "@cypress/listr-verbose-renderer": "0.4.1", @@ -3612,13 +3594,13 @@ "executable": "4.1.1", "extract-zip": "1.6.6", "fs-extra": "4.0.1", - "getos": "2.8.4", + "getos": "3.1.0", "glob": "7.1.2", "is-ci": "1.0.10", "is-installed-globally": "0.1.0", "lazy-ass": "1.6.0", "listr": "0.12.0", - "lodash": "4.17.4", + "lodash": "4.17.10", "log-symbols": "2.2.0", "minimist": "1.2.0", "progress": "1.1.8", @@ -3652,9 +3634,9 @@ }, "dependencies": { "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -3677,12 +3659,6 @@ "ms": "2.0.0" } }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true - }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", @@ -6205,12 +6181,12 @@ "dev": true }, "getos": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/getos/-/getos-2.8.4.tgz", - "integrity": "sha1-e4YD02GcKOOMsP56T2PDrLgNUWM=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.1.0.tgz", + "integrity": "sha512-i9vrxtDu5DlLVFcrbqUqGWYlZN/zZ4pGMICCAcZoYsX3JA54nYp8r5EThw5K+m2q3wszkx4Th746JstspB0H4Q==", "dev": true, "requires": { - "async": "2.1.4" + "async": "2.4.0" } }, "getpass": { @@ -6598,18 +6574,6 @@ "markdown-it": "^8.4.0" } }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "dev": true, - "requires": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x", - "sntp": "1.x.x" - } - }, "history": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/history/-/history-3.3.0.tgz", @@ -6643,12 +6607,6 @@ "minimalistic-crypto-utils": "^1.0.1" } }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true - }, "hoist-non-react-statics": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.2.0.tgz", @@ -7602,15 +7560,6 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "~0.0.0" - } - }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -7637,12 +7586,6 @@ "graceful-fs": "^4.1.6" } }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -8919,9 +8862,9 @@ "integrity": "sha1-mCu6Q+zU8pIqKcwYamu7C7c/y6Y=" }, "node-gyp": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.7.0.tgz", - "integrity": "sha512-qDQE/Ft9xXP6zphwx4sD0t+VhwV7yFaloMpfbL2QnnDZcyaiakWlLdtFGGQfTAwpFHdpbRhRxVhIHN1OKAjgbg==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", "dev": true, "requires": { "fstream": "^1.0.0", @@ -8931,115 +8874,13 @@ "nopt": "2 || 3", "npmlog": "0 || 1 || 2 || 3 || 4", "osenv": "0", - "request": ">=2.9.0 <2.82.0", + "request": "^2.87.0", "rimraf": "2", "semver": "~5.3.0", "tar": "^2.0.0", "which": "1" }, "dependencies": { - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" - } - }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "dev": true - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "dev": true - }, - "form-data": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", - "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.12" - } - }, - "har-schema": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", - "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", - "dev": true - }, - "har-validator": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", - "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", - "dev": true, - "requires": { - "ajv": "^4.9.1", - "har-schema": "^1.0.5" - } - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "dev": true, - "requires": { - "assert-plus": "^0.2.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "performance-now": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", - "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", - "dev": true - }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", - "dev": true - }, - "request": { - "version": "2.81.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", - "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", - "dev": true, - "requires": { - "aws-sign2": "~0.6.0", - "aws4": "^1.2.1", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.0", - "forever-agent": "~0.6.1", - "form-data": "~2.1.1", - "har-validator": "~4.2.1", - "hawk": "~3.1.3", - "http-signature": "~1.1.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.7", - "oauth-sign": "~0.8.1", - "performance-now": "^0.2.0", - "qs": "~6.4.0", - "safe-buffer": "^5.0.1", - "stringstream": "~0.0.4", - "tough-cookie": "~2.3.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.0.0" - } - }, "semver": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", @@ -14280,15 +14121,6 @@ "kind-of": "^3.2.0" } }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "dev": true, - "requires": { - "hoek": "2.x.x" - } - }, "sort-keys": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", @@ -14544,12 +14376,6 @@ "is-regexp": "^1.0.0" } }, - "stringstream": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz", - "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==", - "dev": true - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", diff --git a/console/package.json b/console/package.json index 83d3b3254f6a8..18bdb9915959d 100644 --- a/console/package.json +++ b/console/package.json @@ -23,7 +23,7 @@ "dev": "concurrently --kill-others \"npm run watch-client\" \"npm run start-dev\" ", "precommit": "lint-staged", "cypress": "cypress open", - "test": "cypress run --spec 'cypress/integration/test_complete.js' --config baseUrl=$CYPRESS_BASE_URL" + "test": "cypress run --spec 'cypress/integration/**/**/test.js' --key $CYPRESS_KEY --parallel --record" }, "lint-staged": { "*.js": [ @@ -117,7 +117,7 @@ "clean-webpack-plugin": "^0.1.17", "concurrently": "^3.5.0", "css-loader": "^0.28.11", - "cypress": "3.0.2", + "cypress": "^3.1.0", "dotenv": "^5.0.1", "eslint": "^4.19.1", "eslint-config-airbnb": "16.1.0",