Adds e2e baseline SQL test in puppeteer (#160)
* Adds e2e baseline SQL test in puppeteer * fix lint * Skip index test * add to ci * Stop waiting for server * Switch to headless mode * Adds wait-for-server to package.json and uses it in puppeteer CI * Adds waiton * top level wait on * Adds env var to secrets ci.yml * use existing connection string * redo tests * nits and hopefully fix timeout issue * Fix config file * try waiting for delete container menu * Removes statuseval * Remove unused var * Slow down and add quotes to selector * Fix blocking point, remove wait * Reduce to 50 * Adds database delete stuff * remove logs, add back waitFors * Finish container SQL spec test
This commit is contained in:
parent
2de3c07f76
commit
3fe63e88cb
|
@ -4,3 +4,4 @@ PORTAL_RUNNER_PASSWORD=
|
||||||
PORTAL_RUNNER_SUBSCRIPTION=
|
PORTAL_RUNNER_SUBSCRIPTION=
|
||||||
PORTAL_RUNNER_RESOURCE_GROUP=
|
PORTAL_RUNNER_RESOURCE_GROUP=
|
||||||
PORTAL_RUNNER_DATABASE_ACCOUNT=
|
PORTAL_RUNNER_DATABASE_ACCOUNT=
|
||||||
|
PORTAL_RUNNER_CONNECTION_STRING=
|
|
@ -196,6 +196,26 @@ jobs:
|
||||||
shell: bash
|
shell: bash
|
||||||
env:
|
env:
|
||||||
NODE_TLS_REJECT_UNAUTHORIZED: 0
|
NODE_TLS_REJECT_UNAUTHORIZED: 0
|
||||||
|
endtoendpuppeteer:
|
||||||
|
name: "End to end puppeteer tests"
|
||||||
|
needs: [lint, format, compile, unittest]
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Use Node.js 12.x
|
||||||
|
uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: 12.x
|
||||||
|
- name: End to End Puppeteer Tests
|
||||||
|
run: |
|
||||||
|
npm ci
|
||||||
|
npm start &
|
||||||
|
npm run wait-for-server
|
||||||
|
npm run test:e2e
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
NODE_TLS_REJECT_UNAUTHORIZED: 0
|
||||||
|
PORTAL_RUNNER_CONNECTION_STRING: ${{ secrets.CONNECTION_STRING_SQL }}
|
||||||
nuget:
|
nuget:
|
||||||
name: Publish Nuget
|
name: Publish Nuget
|
||||||
if: github.ref == 'refs/heads/master' || contains(github.ref, 'hotfix/') || contains(github.ref, 'release/')
|
if: github.ref == 'refs/heads/master' || contains(github.ref, 'hotfix/') || contains(github.ref, 'release/')
|
||||||
|
|
|
@ -3,7 +3,8 @@ const isCI = require("is-ci");
|
||||||
module.exports = {
|
module.exports = {
|
||||||
launch: {
|
launch: {
|
||||||
headless: isCI,
|
headless: isCI,
|
||||||
slowMo: isCI ? null : 20,
|
slowMo: 50,
|
||||||
defaultViewport: null
|
defaultViewport: null,
|
||||||
|
ignoreHTTPSErrors: true
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -3490,9 +3490,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@fluentui/date-time-utilities": {
|
"@fluentui/date-time-utilities": {
|
||||||
"version": "7.7.0",
|
"version": "7.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-7.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-7.8.0.tgz",
|
||||||
"integrity": "sha512-rgtGX5x1AeYUfilfkgP6ag+ZKx41BJcUs16k6iSxXxd/mt00DAPOGY8ODGikKFpjGKcUwjKfYBssyKkVHDucfA==",
|
"integrity": "sha512-qzlTp3t+PghebJsLK9JwZr91qBRZ/fOml8TQCIjdtsEn4mH6/ciCwir7Fj8iOEkwwTC0iKsEr1jfsITtJKWSmA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@uifabric/set-version": "^7.0.22",
|
"@uifabric/set-version": "^7.0.22",
|
||||||
"tslib": "^1.10.0"
|
"tslib": "^1.10.0"
|
||||||
|
@ -3517,9 +3517,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@fluentui/react-focus": {
|
"@fluentui/react-focus": {
|
||||||
"version": "7.15.0",
|
"version": "7.16.0",
|
||||||
"resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-7.15.0.tgz",
|
"resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-7.16.0.tgz",
|
||||||
"integrity": "sha512-xbxB0cbyEoUfQZ19pAqBeWCYJ/4IOu1FG4bhVjDimqSD7qKwJbLlJSDNwmHr05SWprdhmqJe23KOwsHMgyvnrw==",
|
"integrity": "sha512-TwB4Av7ID70ejisDIGkCZGKOxlquSazr6W+9Jv1JQAvsBLuj5XOspFJH4/Igjniw1LeO9QmAvFZeh/XRShiObw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@fluentui/keyboard-key": "^0.2.11",
|
"@fluentui/keyboard-key": "^0.2.11",
|
||||||
"@uifabric/merge-styles": "^7.18.0",
|
"@uifabric/merge-styles": "^7.18.0",
|
||||||
|
@ -3685,6 +3685,12 @@
|
||||||
"integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==",
|
"integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"@hapi/formula": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-V87P8fv7PI0LH7LiVi8Lkf3x+KCO7pQozXRssAHNXXL9L1K+uyu4XypLXwxqVDKgyQai6qj3/KteNlrqDx4W5A==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"@hapi/hoek": {
|
"@hapi/hoek": {
|
||||||
"version": "8.5.1",
|
"version": "8.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz",
|
||||||
|
@ -3703,6 +3709,12 @@
|
||||||
"@hapi/topo": "3.x.x"
|
"@hapi/topo": "3.x.x"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@hapi/pinpoint": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-vzXR5MY7n4XeIvLpfl3HtE3coZYO4raKXW766R6DZw/6aLqR26iuZ109K7a0NtF2Db0jxqh7xz2AxkUwpUFybw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"@hapi/topo": {
|
"@hapi/topo": {
|
||||||
"version": "3.1.6",
|
"version": "3.1.6",
|
||||||
"resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz",
|
"resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz",
|
||||||
|
@ -7616,6 +7628,16 @@
|
||||||
"@types/enzyme": "*"
|
"@types/enzyme": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@types/expect-puppeteer": {
|
||||||
|
"version": "4.4.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/expect-puppeteer/-/expect-puppeteer-4.4.3.tgz",
|
||||||
|
"integrity": "sha512-jWZOO9d8ST2vutV5yxZ1OYxxtYD0lOufIgOUlDjyTNBGo8um67shJs2NQDLVDG06wWrabpPPOUQlI8GSvsdKVQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@types/jest": "*",
|
||||||
|
"@types/puppeteer": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"@types/geojson": {
|
"@types/geojson": {
|
||||||
"version": "7946.0.7",
|
"version": "7946.0.7",
|
||||||
"resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.7.tgz",
|
"resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.7.tgz",
|
||||||
|
@ -7691,6 +7713,33 @@
|
||||||
"integrity": "sha512-DC8xTuW/6TYgvEg3HEXS7cu9OijFqprVDXXiOcdOKZCU/5PJNLZU37VVvmZHdtMiGOa8wAA/We+JzbdxFzQTRQ==",
|
"integrity": "sha512-DC8xTuW/6TYgvEg3HEXS7cu9OijFqprVDXXiOcdOKZCU/5PJNLZU37VVvmZHdtMiGOa8wAA/We+JzbdxFzQTRQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"@types/jest-environment-puppeteer": {
|
||||||
|
"version": "4.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/jest-environment-puppeteer/-/jest-environment-puppeteer-4.3.2.tgz",
|
||||||
|
"integrity": "sha512-QVR49cGaQMOrWRN7CXlvtPMuVAxa3Z+W3APxhWoSQLG/lvz1y03ECPvS7Y9eK+hgfndK+39400rO6IifDJV9YA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@jest/environment": "^24",
|
||||||
|
"@jest/fake-timers": "^24",
|
||||||
|
"@jest/types": "^24",
|
||||||
|
"@types/puppeteer": "*",
|
||||||
|
"jest-mock": "^24"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@jest/environment": {
|
||||||
|
"version": "24.9.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz",
|
||||||
|
"integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@jest/fake-timers": "^24.9.0",
|
||||||
|
"@jest/transform": "^24.9.0",
|
||||||
|
"@jest/types": "^24.9.0",
|
||||||
|
"jest-mock": "^24.9.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"@types/json-schema": {
|
"@types/json-schema": {
|
||||||
"version": "7.0.4",
|
"version": "7.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz",
|
||||||
|
@ -7766,6 +7815,15 @@
|
||||||
"integrity": "sha512-3AQoUxQcQtLHsK25wtTWIoIpgYjH3vSDroZOUr7PpCHw/jLY1RB9z9E8dBT/OSmwStVgkRNvdh+ZHNiomRieaw==",
|
"integrity": "sha512-3AQoUxQcQtLHsK25wtTWIoIpgYjH3vSDroZOUr7PpCHw/jLY1RB9z9E8dBT/OSmwStVgkRNvdh+ZHNiomRieaw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"@types/puppeteer": {
|
||||||
|
"version": "3.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-3.0.1.tgz",
|
||||||
|
"integrity": "sha512-t03eNKCvWJXhQ8wkc5C6GYuSqMEdKLOX0GLMGtks25YZr38wKZlKTwGM/BoAPVtdysX7Bb9tdwrDS1+NrW3RRA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@types/node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"@types/pvutils": {
|
"@types/pvutils": {
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/@types/pvutils/-/pvutils-0.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/pvutils/-/pvutils-0.0.1.tgz",
|
||||||
|
@ -8389,46 +8447,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@uifabric/react-hooks": {
|
|
||||||
"version": "7.11.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@uifabric/react-hooks/-/react-hooks-7.11.0.tgz",
|
|
||||||
"integrity": "sha512-iU7c+JR+rY5kBTPmrF8F6iJBQw309MX/MvOx6ElhmNceBaa8BqDuqR9+TVfkH+Bxp37bmZnCaQF5w4+QWHZ81g==",
|
|
||||||
"requires": {
|
|
||||||
"@uifabric/set-version": "^7.0.22",
|
|
||||||
"@uifabric/utilities": "^7.31.0",
|
|
||||||
"tslib": "^1.10.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@uifabric/merge-styles": {
|
|
||||||
"version": "7.18.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@uifabric/merge-styles/-/merge-styles-7.18.0.tgz",
|
|
||||||
"integrity": "sha512-805WIbN7lAJATXKxZjjRbIgN7raRMwWYWeDkJJ52PCPuCesOvbpdr0GkH8rC6GQ7EB0MB7YM2i6Fiye7SFewbw==",
|
|
||||||
"requires": {
|
|
||||||
"@uifabric/set-version": "^7.0.22",
|
|
||||||
"tslib": "^1.10.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@uifabric/set-version": {
|
|
||||||
"version": "7.0.22",
|
|
||||||
"resolved": "https://registry.npmjs.org/@uifabric/set-version/-/set-version-7.0.22.tgz",
|
|
||||||
"integrity": "sha512-IG35UNJNxqI7NC2eYuobGTD+v4W0VHQcC3bYd5Na9EgoC9jVgguS8n6EXUtP/lC1vJEYEyPEZdVwhPxKw4F4Sw==",
|
|
||||||
"requires": {
|
|
||||||
"tslib": "^1.10.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@uifabric/utilities": {
|
|
||||||
"version": "7.31.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/@uifabric/utilities/-/utilities-7.31.0.tgz",
|
|
||||||
"integrity": "sha512-m4Yeyn4gyW7xS8LvOnCesokPModYS2YuE9GQmO++MDZ/vC5RRNlvlyktUZDuxCZ84cNCiXyTQ8nImBaPGnxHVQ==",
|
|
||||||
"requires": {
|
|
||||||
"@uifabric/merge-styles": "^7.18.0",
|
|
||||||
"@uifabric/set-version": "^7.0.22",
|
|
||||||
"prop-types": "^15.7.2",
|
|
||||||
"tslib": "^1.10.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@uifabric/set-version": {
|
"@uifabric/set-version": {
|
||||||
"version": "7.0.15",
|
"version": "7.0.15",
|
||||||
"resolved": "https://registry.npmjs.org/@uifabric/set-version/-/set-version-7.0.15.tgz",
|
"resolved": "https://registry.npmjs.org/@uifabric/set-version/-/set-version-7.0.15.tgz",
|
||||||
|
@ -8929,9 +8947,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"acorn-jsx": {
|
"acorn-jsx": {
|
||||||
"version": "5.2.0",
|
"version": "5.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz",
|
||||||
"integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==",
|
"integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"acorn-walk": {
|
"acorn-walk": {
|
||||||
|
@ -9316,6 +9334,13 @@
|
||||||
"integrity": "sha512-yG89F0j9B4B0MKIcFyWWxnpZPLaNTjCj4tkE3fjbAoo0qmpGw0PYYqSbX/4ebnd9Icn8ZgK4K1fvDyEtW1JYtQ==",
|
"integrity": "sha512-yG89F0j9B4B0MKIcFyWWxnpZPLaNTjCj4tkE3fjbAoo0qmpGw0PYYqSbX/4ebnd9Icn8ZgK4K1fvDyEtW1JYtQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"pvutils": "^1.0.17"
|
"pvutils": "^1.0.17"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"pvutils": {
|
||||||
|
"version": "1.0.17",
|
||||||
|
"resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.0.17.tgz",
|
||||||
|
"integrity": "sha512-wLHYUQxWaXVQvKnwIDWFVKDJku9XDCvyhhxoq8dc5MFdIlRenyPI9eSfEtcvgHgD7FlvCyGAlWgOzRnZD99GZQ=="
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"assert": {
|
"assert": {
|
||||||
|
@ -15041,12 +15066,6 @@
|
||||||
"pinkie-promise": "^2.0.0"
|
"pinkie-promise": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"fsevents": {
|
|
||||||
"version": "2.1.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
|
|
||||||
"integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"get-caller-file": {
|
"get-caller-file": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
|
||||||
|
@ -15095,7 +15114,6 @@
|
||||||
"@types/graceful-fs": "^4.1.2",
|
"@types/graceful-fs": "^4.1.2",
|
||||||
"anymatch": "^3.0.3",
|
"anymatch": "^3.0.3",
|
||||||
"fb-watchman": "^2.0.0",
|
"fb-watchman": "^2.0.0",
|
||||||
"fsevents": "^2.1.2",
|
|
||||||
"graceful-fs": "^4.2.4",
|
"graceful-fs": "^4.2.4",
|
||||||
"jest-serializer": "^25.5.0",
|
"jest-serializer": "^25.5.0",
|
||||||
"jest-util": "^25.5.0",
|
"jest-util": "^25.5.0",
|
||||||
|
@ -17657,6 +17675,19 @@
|
||||||
"requires": {
|
"requires": {
|
||||||
"has-flag": "^4.0.0"
|
"has-flag": "^4.0.0"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"wait-on": {
|
||||||
|
"version": "3.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/wait-on/-/wait-on-3.3.0.tgz",
|
||||||
|
"integrity": "sha512-97dEuUapx4+Y12aknWZn7D25kkjMk16PbWoYzpSdA8bYpVfS6hpl2a2pOWZ3c+Tyt3/i4/pglyZctG3J4V1hWQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@hapi/joi": "^15.0.3",
|
||||||
|
"core-js": "^2.6.5",
|
||||||
|
"minimist": "^1.2.0",
|
||||||
|
"request": "^2.88.0",
|
||||||
|
"rx": "^4.1.0"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -22285,6 +22316,16 @@
|
||||||
"tslib": "^1.10.0"
|
"tslib": "^1.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@uifabric/react-hooks": {
|
||||||
|
"version": "7.12.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@uifabric/react-hooks/-/react-hooks-7.12.0.tgz",
|
||||||
|
"integrity": "sha512-vPrg7NVtjjZlDS33tDUiyJSov8PNHBBX8w+EN9eatxP0g6dDkvGv8uWd+9Xpxrliuzi7ad7vlmUMOQffYJntMg==",
|
||||||
|
"requires": {
|
||||||
|
"@uifabric/set-version": "^7.0.22",
|
||||||
|
"@uifabric/utilities": "^7.31.0",
|
||||||
|
"tslib": "^1.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"@uifabric/set-version": {
|
"@uifabric/set-version": {
|
||||||
"version": "7.0.22",
|
"version": "7.0.22",
|
||||||
"resolved": "https://registry.npmjs.org/@uifabric/set-version/-/set-version-7.0.22.tgz",
|
"resolved": "https://registry.npmjs.org/@uifabric/set-version/-/set-version-7.0.22.tgz",
|
||||||
|
@ -23400,11 +23441,6 @@
|
||||||
"tslib": "^1.10.0"
|
"tslib": "^1.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"pvutils": {
|
|
||||||
"version": "1.0.17",
|
|
||||||
"resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.0.17.tgz",
|
|
||||||
"integrity": "sha512-wLHYUQxWaXVQvKnwIDWFVKDJku9XDCvyhhxoq8dc5MFdIlRenyPI9eSfEtcvgHgD7FlvCyGAlWgOzRnZD99GZQ=="
|
|
||||||
},
|
|
||||||
"q": {
|
"q": {
|
||||||
"version": "1.5.1",
|
"version": "1.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
|
||||||
|
@ -26901,16 +26937,65 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"wait-on": {
|
"wait-on": {
|
||||||
"version": "3.3.0",
|
"version": "4.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/wait-on/-/wait-on-3.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/wait-on/-/wait-on-4.0.2.tgz",
|
||||||
"integrity": "sha512-97dEuUapx4+Y12aknWZn7D25kkjMk16PbWoYzpSdA8bYpVfS6hpl2a2pOWZ3c+Tyt3/i4/pglyZctG3J4V1hWQ==",
|
"integrity": "sha512-Qpmgm3Hw/sXm7xK68FBsYy5r+Uid94/QymwnEjn9GTpfiWTUVYm0bccivVwY/BXGYO2r+5Cd8S/DzrRZqHK/9w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@hapi/joi": "^15.0.3",
|
"@hapi/joi": "^17.1.1",
|
||||||
"core-js": "^2.6.5",
|
"lodash": "^4.17.15",
|
||||||
"minimist": "^1.2.0",
|
"minimist": "^1.2.5",
|
||||||
"request": "^2.88.0",
|
"request": "^2.88.2",
|
||||||
"rx": "^4.1.0"
|
"request-promise-native": "^1.0.8",
|
||||||
|
"rxjs": "^6.5.5"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@hapi/address": {
|
||||||
|
"version": "4.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@hapi/address/-/address-4.1.0.tgz",
|
||||||
|
"integrity": "sha512-SkszZf13HVgGmChdHo/PxchnSaCJ6cetVqLzyciudzZRT0jcOouIF/Q93mgjw8cce+D+4F4C1Z/WrfFN+O3VHQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@hapi/hoek": "^9.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@hapi/hoek": {
|
||||||
|
"version": "9.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.0.4.tgz",
|
||||||
|
"integrity": "sha512-EwaJS7RjoXUZ2cXXKZZxZqieGtc7RbvQhUy8FwDoMQtxWVi14tFjeFCYPZAM1mBCpOpiBpyaZbb9NeHc7eGKgw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"@hapi/joi": {
|
||||||
|
"version": "17.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-17.1.1.tgz",
|
||||||
|
"integrity": "sha512-p4DKeZAoeZW4g3u7ZeRo+vCDuSDgSvtsB/NpfjXEHTUjSeINAi/RrVOWiVQ1isaoLzMvFEhe8n5065mQq1AdQg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@hapi/address": "^4.0.1",
|
||||||
|
"@hapi/formula": "^2.0.0",
|
||||||
|
"@hapi/hoek": "^9.0.0",
|
||||||
|
"@hapi/pinpoint": "^2.0.0",
|
||||||
|
"@hapi/topo": "^5.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@hapi/topo": {
|
||||||
|
"version": "5.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.0.0.tgz",
|
||||||
|
"integrity": "sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"@hapi/hoek": "^9.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rxjs": {
|
||||||
|
"version": "6.6.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz",
|
||||||
|
"integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"tslib": "^1.9.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"wait-port": {
|
"wait-port": {
|
||||||
|
|
|
@ -102,12 +102,15 @@
|
||||||
"@types/d3": "4.13.2",
|
"@types/d3": "4.13.2",
|
||||||
"@types/enzyme": "3.10.3",
|
"@types/enzyme": "3.10.3",
|
||||||
"@types/enzyme-adapter-react-16": "1.0.5",
|
"@types/enzyme-adapter-react-16": "1.0.5",
|
||||||
|
"@types/expect-puppeteer": "4.4.3",
|
||||||
"@types/hasher": "0.0.31",
|
"@types/hasher": "0.0.31",
|
||||||
"@types/jest": "23.3.10",
|
"@types/jest": "23.3.10",
|
||||||
|
"@types/jest-environment-puppeteer": "4.3.2",
|
||||||
"@types/memoize-one": "4.1.1",
|
"@types/memoize-one": "4.1.1",
|
||||||
"@types/node": "12.11.1",
|
"@types/node": "12.11.1",
|
||||||
"@types/promise.prototype.finally": "2.0.3",
|
"@types/promise.prototype.finally": "2.0.3",
|
||||||
"@types/prop-types": "15.5.8",
|
"@types/prop-types": "15.5.8",
|
||||||
|
"@types/puppeteer": "3.0.1",
|
||||||
"@types/q": "1.5.1",
|
"@types/q": "1.5.1",
|
||||||
"@types/react": "16.8.25",
|
"@types/react": "16.8.25",
|
||||||
"@types/react-dom": "16.0.7",
|
"@types/react-dom": "16.0.7",
|
||||||
|
@ -166,6 +169,7 @@
|
||||||
"tslint-microsoft-contrib": "6.0.0",
|
"tslint-microsoft-contrib": "6.0.0",
|
||||||
"typescript": "4.0.2",
|
"typescript": "4.0.2",
|
||||||
"url-loader": "1.1.1",
|
"url-loader": "1.1.1",
|
||||||
|
"wait-on": "4.0.2",
|
||||||
"webpack": "4.43.0",
|
"webpack": "4.43.0",
|
||||||
"webpack-bundle-analyzer": "3.6.1",
|
"webpack-bundle-analyzer": "3.6.1",
|
||||||
"webpack-cli": "3.3.10",
|
"webpack-cli": "3.3.10",
|
||||||
|
@ -184,6 +188,7 @@
|
||||||
"test": "rimraf coverage && jest",
|
"test": "rimraf coverage && jest",
|
||||||
"test:e2e": "jest -c ./jest.config.e2e.js --detectOpenHandles",
|
"test:e2e": "jest -c ./jest.config.e2e.js --detectOpenHandles",
|
||||||
"watch": "npm run start",
|
"watch": "npm run start",
|
||||||
|
"wait-for-server": "wait-on -t 240000 -i 5000 -v https-get://0.0.0.0:1234/",
|
||||||
"build:ase": "gulp build:ase",
|
"build:ase": "gulp build:ase",
|
||||||
"compile": "tsc",
|
"compile": "tsc",
|
||||||
"compile:contracts": "tsc -p ./tsconfig.contracts.json",
|
"compile:contracts": "tsc -p ./tsconfig.contracts.json",
|
||||||
|
|
|
@ -1893,6 +1893,9 @@ export default class Explorer {
|
||||||
}
|
}
|
||||||
|
|
||||||
public findSelectedDatabase(): ViewModels.Database {
|
public findSelectedDatabase(): ViewModels.Database {
|
||||||
|
if (!this.selectedNode()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
if (this.selectedNode().nodeKind === "Database") {
|
if (this.selectedNode().nodeKind === "Database") {
|
||||||
return _.find(this.databases(), (database: ViewModels.Database) => database.rid === this.selectedNode().rid);
|
return _.find(this.databases(), (database: ViewModels.Database) => database.rid === this.selectedNode().rid);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,106 @@
|
||||||
|
import "expect-puppeteer";
|
||||||
|
import crypto from 'crypto'
|
||||||
|
|
||||||
|
jest.setTimeout(300000);
|
||||||
|
|
||||||
|
describe('Collection Add and Delete SQL spec', () => {
|
||||||
|
it('creates a collection', async () => {
|
||||||
|
try {
|
||||||
|
const dbId = `TestDatabase${crypto.randomBytes(8).toString("hex")}`;
|
||||||
|
const collectionId = `TestCollection${crypto.randomBytes(8).toString("hex")}`;
|
||||||
|
const sharedKey = `SharedKey${crypto.randomBytes(8).toString("hex")}`;
|
||||||
|
const prodUrl = "https://localhost:1234/hostedExplorer.html";
|
||||||
|
page.goto(prodUrl);
|
||||||
|
|
||||||
|
// log in with connection string
|
||||||
|
const handle = await page.waitForSelector('iframe');
|
||||||
|
const frame = await handle.contentFrame();
|
||||||
|
await frame.waitFor('div > p.switchConnectTypeText', { visible: true });
|
||||||
|
await frame.click('div > p.switchConnectTypeText');
|
||||||
|
const connStr = process.env.PORTAL_RUNNER_CONNECTION_STRING;
|
||||||
|
await frame.type("input[class='inputToken']", connStr);
|
||||||
|
await frame.click("input[value='Connect']");
|
||||||
|
|
||||||
|
// create new collection
|
||||||
|
await frame.waitFor('button[data-test="New Container"]', { visible: true });
|
||||||
|
await frame.waitForSelector('div[class="splashScreen"] > div[class="title"]', { visible: true });
|
||||||
|
await frame.click('button[data-test="New Container"]');
|
||||||
|
|
||||||
|
// check new database
|
||||||
|
await frame.waitFor('input[data-test="addCollection-createNewDatabase"]');
|
||||||
|
await frame.click('input[data-test="addCollection-createNewDatabase"]');
|
||||||
|
|
||||||
|
// check shared throughput
|
||||||
|
await frame.waitFor('input[data-test="addCollectionPane-databaseSharedThroughput"]');
|
||||||
|
await frame.click('input[data-test="addCollectionPane-databaseSharedThroughput"]') ;
|
||||||
|
|
||||||
|
// type database id
|
||||||
|
await frame.waitFor('input[data-test="addCollection-newDatabaseId"]');
|
||||||
|
await frame.type('input[data-test="addCollection-newDatabaseId"]', dbId);
|
||||||
|
|
||||||
|
// type collection id
|
||||||
|
await frame.waitFor('input[data-test="addCollection-collectionId"]');
|
||||||
|
await frame.type('input[data-test="addCollection-collectionId"]', collectionId);
|
||||||
|
|
||||||
|
// type partition key value
|
||||||
|
await frame.waitFor('input[data-test="addCollection-partitionKeyValue"]');
|
||||||
|
await frame.type('input[data-test="addCollection-partitionKeyValue"]', sharedKey);
|
||||||
|
|
||||||
|
// click submit
|
||||||
|
await frame.waitFor('#submitBtnAddCollection');
|
||||||
|
await frame.click('#submitBtnAddCollection');
|
||||||
|
|
||||||
|
// validate created
|
||||||
|
// open database menu
|
||||||
|
await frame.waitFor(`span[title="${dbId}"]`);
|
||||||
|
await frame.waitForSelector('div[class="splashScreen"] > div[class="title"]', { visible: true });
|
||||||
|
|
||||||
|
await frame.click(`div[data-test="${dbId}"]`);
|
||||||
|
await frame.waitFor(`span[title="${collectionId}"]`);
|
||||||
|
|
||||||
|
// delete container
|
||||||
|
|
||||||
|
// click context menu for container
|
||||||
|
await frame.waitFor(`div[data-test="${collectionId}"] > div > button`);
|
||||||
|
await frame.click(`div[data-test="${collectionId}"] > div > button`);
|
||||||
|
|
||||||
|
// click delete container
|
||||||
|
await frame.waitForSelector('body > div.ms-Layer.ms-Layer--fixed');
|
||||||
|
await frame.waitFor(1000);
|
||||||
|
const elements = await frame.$$('span[class="treeComponentMenuItemLabel"]')
|
||||||
|
await elements[4].click();
|
||||||
|
|
||||||
|
// confirm delete container
|
||||||
|
await frame.type('input[data-test="confirmCollectionId"]', collectionId.trim());
|
||||||
|
|
||||||
|
// click delete
|
||||||
|
await frame.click('input[data-test="deleteCollection"]');
|
||||||
|
await frame.waitFor(5000);
|
||||||
|
await frame.waitForSelector('div[class="splashScreen"] > div[class="title"]', { visible: true });
|
||||||
|
|
||||||
|
await expect(page).not.toMatchElement(`div[data-test="${collectionId}"]`);
|
||||||
|
|
||||||
|
// click context menu for database
|
||||||
|
await frame.waitFor(`div[data-test="${dbId}"] > div > button`);
|
||||||
|
const button = await frame.$(`div[data-test="${dbId}"] > div > button`);
|
||||||
|
await button.focus();
|
||||||
|
await button.asElement().click();
|
||||||
|
|
||||||
|
// click delete database
|
||||||
|
await frame.waitFor(1000);
|
||||||
|
const dbElements = await frame.$$('span[class="treeComponentMenuItemLabel"]')
|
||||||
|
await dbElements[1].click();
|
||||||
|
|
||||||
|
// confirm delete database
|
||||||
|
await frame.type('input[data-test="confirmDatabaseId"]', dbId.trim());
|
||||||
|
|
||||||
|
// click delete
|
||||||
|
await frame.click('input[data-test="deleteDatabase"]');
|
||||||
|
await frame.waitForSelector('div[class="splashScreen"] > div[class="title"]', { visible: true });
|
||||||
|
await expect(page).not.toMatchElement(`div[data-test="${dbId}"]`);
|
||||||
|
} catch (error) {
|
||||||
|
await page.screenshot({path: 'failure.png'});
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
|
@ -3,7 +3,7 @@ import { trackEvent, trackException } from "./utils";
|
||||||
|
|
||||||
jest.setTimeout(300000);
|
jest.setTimeout(300000);
|
||||||
|
|
||||||
describe("Collection CRUD", () => {
|
describe.skip("Collection CRUD", () => {
|
||||||
it("should complete collection crud", async () => {
|
it("should complete collection crud", async () => {
|
||||||
try {
|
try {
|
||||||
// Login to Azure Portal
|
// Login to Azure Portal
|
Loading…
Reference in New Issue