@kalisio/kdk 1.4.0 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.nyc_output/{0f1a87aa-d3bb-4c61-8c1e-12294055358d.json → 058fc679-d60a-4501-ac04-71171e5200b8.json} +0 -0
- package/.nyc_output/2226bcce-9d22-4dad-b9fa-46564b5565c7.json +1 -0
- package/.nyc_output/6dc4b140-1a8a-4d69-b91c-89c557883d6e.json +1 -0
- package/.nyc_output/{8be4cd9f-124a-41f9-80f4-f267ced63c86.json → 8b1830fa-932e-4a61-9837-4a5b18f83ea9.json} +0 -0
- package/.nyc_output/{a63b0924-fd09-4e30-974f-cb4be2243b66.json → afd2d144-3570-4858-b94a-b523dbd023dd.json} +0 -0
- package/.nyc_output/processinfo/058fc679-d60a-4501-ac04-71171e5200b8.json +1 -0
- package/.nyc_output/processinfo/{27204015-ebfd-456f-a3bb-6a94f71946b8.json → 2226bcce-9d22-4dad-b9fa-46564b5565c7.json} +1 -1
- package/.nyc_output/processinfo/6dc4b140-1a8a-4d69-b91c-89c557883d6e.json +1 -0
- package/.nyc_output/processinfo/8b1830fa-932e-4a61-9837-4a5b18f83ea9.json +1 -0
- package/.nyc_output/processinfo/afd2d144-3570-4858-b94a-b523dbd023dd.json +1 -0
- package/.nyc_output/processinfo/index.json +1 -1
- package/CHANGELOG.md +219 -68
- package/coverage/core/api/application.js.html +455 -455
- package/coverage/core/api/authentication.js.html +119 -119
- package/coverage/core/api/db.js.html +201 -201
- package/coverage/core/api/hooks/hooks.account.js.html +48 -48
- package/coverage/core/api/hooks/hooks.authentication.js.html +64 -64
- package/coverage/core/api/hooks/hooks.authorisations.js.html +353 -353
- package/coverage/core/api/hooks/hooks.devices.js.html +22 -22
- package/coverage/core/api/hooks/hooks.groups.js.html +37 -37
- package/coverage/core/api/hooks/hooks.logger.js.html +27 -27
- package/coverage/core/api/hooks/hooks.model.js.html +269 -269
- package/coverage/core/api/hooks/hooks.organisations.js.html +183 -231
- package/coverage/core/api/hooks/hooks.pusher.js.html +114 -114
- package/coverage/core/api/hooks/hooks.query.js.html +200 -200
- package/coverage/core/api/hooks/hooks.service.js.html +82 -82
- package/coverage/core/api/hooks/hooks.storage.js.html +121 -121
- package/coverage/core/api/hooks/hooks.tags.js.html +232 -232
- package/coverage/core/api/hooks/hooks.users.js.html +261 -261
- package/coverage/core/api/hooks/index.html +167 -167
- package/coverage/core/api/hooks/index.js.html +24 -24
- package/coverage/core/api/index.html +75 -75
- package/coverage/core/api/index.js.html +26 -26
- package/coverage/core/api/marshall.js.html +57 -57
- package/coverage/core/api/models/groups.model.mongodb.js.html +20 -20
- package/coverage/core/api/models/index.html +50 -50
- package/coverage/core/api/models/organisations.model.mongodb.js.html +12 -12
- package/coverage/core/api/models/tags.model.mongodb.js.html +22 -22
- package/coverage/core/api/models/users.model.mongodb.js.html +20 -20
- package/coverage/core/api/oauth2-handler.js.html +18 -18
- package/coverage/core/api/oauth2-verifier.js.html +38 -38
- package/coverage/core/api/services/account/account.hooks.js.html +16 -16
- package/coverage/core/api/services/account/account.service.js.html +108 -108
- package/coverage/core/api/services/account/index.html +32 -32
- package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +9 -9
- package/coverage/core/api/services/authorisations/authorisations.service.js.html +132 -132
- package/coverage/core/api/services/authorisations/index.html +28 -28
- package/coverage/core/api/services/databases/databases.hooks.js.html +9 -9
- package/coverage/core/api/services/databases/databases.service.js.html +12 -12
- package/coverage/core/api/services/databases/index.html +24 -24
- package/coverage/core/api/services/devices/devices.hooks.js.html +9 -9
- package/coverage/core/api/services/devices/devices.service.js.html +61 -61
- package/coverage/core/api/services/devices/index.html +22 -22
- package/coverage/core/api/services/groups/groups.hooks.js.html +9 -9
- package/coverage/core/api/services/groups/index.html +13 -13
- package/coverage/core/api/services/index.html +21 -21
- package/coverage/core/api/services/index.js.html +137 -137
- package/coverage/core/api/services/mailer/index.html +24 -24
- package/coverage/core/api/services/mailer/mailer.hooks.js.html +9 -9
- package/coverage/core/api/services/mailer/mailer.service.js.html +19 -19
- package/coverage/core/api/services/organisations/index.html +24 -24
- package/coverage/core/api/services/organisations/organisations.hooks.js.html +8 -8
- package/coverage/core/api/services/organisations/organisations.service.js.html +67 -67
- package/coverage/core/api/services/pusher/index.html +32 -32
- package/coverage/core/api/services/pusher/pusher.channels.js.html +8 -8
- package/coverage/core/api/services/pusher/pusher.hooks.js.html +10 -10
- package/coverage/core/api/services/pusher/pusher.service.js.html +336 -336
- package/coverage/core/api/services/storage/index.html +21 -21
- package/coverage/core/api/services/storage/storage.hooks.js.html +35 -35
- package/coverage/core/api/services/tags/index.html +21 -21
- package/coverage/core/api/services/tags/tags.hooks.js.html +25 -25
- package/coverage/core/api/services/users/index.html +21 -21
- package/coverage/core/api/services/users/users.hooks.js.html +33 -33
- package/coverage/core/common/errors.js.html +1 -1
- package/coverage/core/common/index.html +42 -27
- package/coverage/core/common/index.js.html +16 -16
- package/coverage/core/common/permissions.js.html +274 -274
- package/coverage/index.html +174 -174
- package/coverage/lcov-report/core/api/application.js.html +455 -455
- package/coverage/lcov-report/core/api/authentication.js.html +119 -119
- package/coverage/lcov-report/core/api/db.js.html +201 -201
- package/coverage/lcov-report/core/api/hooks/hooks.account.js.html +48 -48
- package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +64 -64
- package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +353 -353
- package/coverage/lcov-report/core/api/hooks/hooks.devices.js.html +22 -22
- package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +37 -37
- package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +27 -27
- package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +269 -269
- package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +183 -231
- package/coverage/lcov-report/core/api/hooks/hooks.pusher.js.html +114 -114
- package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +200 -200
- package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +82 -82
- package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +121 -121
- package/coverage/lcov-report/core/api/hooks/hooks.tags.js.html +232 -232
- package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +261 -261
- package/coverage/lcov-report/core/api/hooks/index.html +167 -167
- package/coverage/lcov-report/core/api/hooks/index.js.html +24 -24
- package/coverage/lcov-report/core/api/index.html +75 -75
- package/coverage/lcov-report/core/api/index.js.html +26 -26
- package/coverage/lcov-report/core/api/marshall.js.html +57 -57
- package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +20 -20
- package/coverage/lcov-report/core/api/models/index.html +50 -50
- package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +12 -12
- package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +22 -22
- package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +20 -20
- package/coverage/lcov-report/core/api/oauth2-handler.js.html +18 -18
- package/coverage/lcov-report/core/api/oauth2-verifier.js.html +38 -38
- package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +16 -16
- package/coverage/lcov-report/core/api/services/account/account.service.js.html +108 -108
- package/coverage/lcov-report/core/api/services/account/index.html +32 -32
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +9 -9
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +132 -132
- package/coverage/lcov-report/core/api/services/authorisations/index.html +28 -28
- package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +9 -9
- package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +12 -12
- package/coverage/lcov-report/core/api/services/databases/index.html +24 -24
- package/coverage/lcov-report/core/api/services/devices/devices.hooks.js.html +9 -9
- package/coverage/lcov-report/core/api/services/devices/devices.service.js.html +61 -61
- package/coverage/lcov-report/core/api/services/devices/index.html +22 -22
- package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +9 -9
- package/coverage/lcov-report/core/api/services/groups/index.html +13 -13
- package/coverage/lcov-report/core/api/services/index.html +21 -21
- package/coverage/lcov-report/core/api/services/index.js.html +137 -137
- package/coverage/lcov-report/core/api/services/mailer/index.html +24 -24
- package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +9 -9
- package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +19 -19
- package/coverage/lcov-report/core/api/services/organisations/index.html +24 -24
- package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +8 -8
- package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +67 -67
- package/coverage/lcov-report/core/api/services/pusher/index.html +32 -32
- package/coverage/lcov-report/core/api/services/pusher/pusher.channels.js.html +8 -8
- package/coverage/lcov-report/core/api/services/pusher/pusher.hooks.js.html +10 -10
- package/coverage/lcov-report/core/api/services/pusher/pusher.service.js.html +336 -336
- package/coverage/lcov-report/core/api/services/storage/index.html +21 -21
- package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +35 -35
- package/coverage/lcov-report/core/api/services/tags/index.html +21 -21
- package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +25 -25
- package/coverage/lcov-report/core/api/services/users/index.html +21 -21
- package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +33 -33
- package/coverage/lcov-report/core/common/errors.js.html +1 -1
- package/coverage/lcov-report/core/common/index.html +42 -27
- package/coverage/lcov-report/core/common/index.js.html +16 -16
- package/coverage/lcov-report/core/common/permissions.js.html +274 -274
- package/coverage/lcov-report/index.html +174 -174
- package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +1 -1
- package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +72 -18
- package/coverage/lcov-report/map/api/hooks/index.html +7 -7
- package/coverage/lcov-report/map/api/hooks/index.js.html +1 -1
- package/coverage/lcov-report/map/api/index.html +1 -1
- package/coverage/lcov-report/map/api/index.js.html +1 -1
- package/coverage/lcov-report/map/api/marshall.js.html +1 -1
- package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/index.html +1 -1
- package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +1 -1
- package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +1 -1
- package/coverage/lcov-report/map/api/services/alerts/index.html +1 -1
- package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +1 -1
- package/coverage/lcov-report/map/api/services/catalog/index.html +1 -1
- package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
- package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
- package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +1 -1
- package/coverage/lcov-report/map/api/services/features/index.html +1 -1
- package/coverage/lcov-report/map/api/services/geocoder/geocoder.hooks.js.html +1 -1
- package/coverage/lcov-report/map/api/services/geocoder/geocoder.service.js.html +1 -1
- package/coverage/lcov-report/map/api/services/geocoder/index.html +1 -1
- package/coverage/lcov-report/map/api/services/index.html +1 -1
- package/coverage/lcov-report/map/api/services/index.js.html +1 -1
- package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/errors.js.html +1 -1
- package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/grid.js.html +1 -1
- package/coverage/lcov-report/map/common/index.html +1 -1
- package/coverage/lcov-report/map/common/index.js.html +1 -1
- package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/moment-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/opendap-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/opendap-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/permissions.js.html +1 -1
- package/coverage/lcov-report/map/common/time-based-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/tms-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/wcs-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/wcs-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/weacast-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/wfs-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/wms-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/wmts-utils.js.html +1 -1
- package/coverage/lcov.info +3289 -3610
- package/coverage/map/api/hooks/hooks.catalog.js.html +1 -1
- package/coverage/map/api/hooks/hooks.query.js.html +72 -18
- package/coverage/map/api/hooks/index.html +7 -7
- package/coverage/map/api/hooks/index.js.html +1 -1
- package/coverage/map/api/index.html +1 -1
- package/coverage/map/api/index.js.html +1 -1
- package/coverage/map/api/marshall.js.html +1 -1
- package/coverage/map/api/models/alerts.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/catalog.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/features.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/index.html +1 -1
- package/coverage/map/api/services/alerts/alerts.hooks.js.html +1 -1
- package/coverage/map/api/services/alerts/alerts.service.js.html +1 -1
- package/coverage/map/api/services/alerts/index.html +1 -1
- package/coverage/map/api/services/catalog/catalog.hooks.js.html +1 -1
- package/coverage/map/api/services/catalog/index.html +1 -1
- package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
- package/coverage/map/api/services/daptiles/index.html +1 -1
- package/coverage/map/api/services/features/features.hooks.js.html +1 -1
- package/coverage/map/api/services/features/index.html +1 -1
- package/coverage/map/api/services/geocoder/geocoder.hooks.js.html +1 -1
- package/coverage/map/api/services/geocoder/geocoder.service.js.html +1 -1
- package/coverage/map/api/services/geocoder/index.html +1 -1
- package/coverage/map/api/services/index.html +1 -1
- package/coverage/map/api/services/index.js.html +1 -1
- package/coverage/map/common/dynamic-grid-source.js.html +1 -1
- package/coverage/map/common/errors.js.html +1 -1
- package/coverage/map/common/geotiff-grid-source.js.html +1 -1
- package/coverage/map/common/grid.js.html +1 -1
- package/coverage/map/common/index.html +1 -1
- package/coverage/map/common/index.js.html +1 -1
- package/coverage/map/common/meteo-model-grid-source.js.html +1 -1
- package/coverage/map/common/moment-utils.js.html +1 -1
- package/coverage/map/common/opendap-grid-source.js.html +1 -1
- package/coverage/map/common/opendap-utils.js.html +1 -1
- package/coverage/map/common/permissions.js.html +1 -1
- package/coverage/map/common/time-based-grid-source.js.html +1 -1
- package/coverage/map/common/tms-utils.js.html +1 -1
- package/coverage/map/common/wcs-grid-source.js.html +1 -1
- package/coverage/map/common/wcs-utils.js.html +1 -1
- package/coverage/map/common/weacast-grid-source.js.html +1 -1
- package/coverage/map/common/wfs-utils.js.html +1 -1
- package/coverage/map/common/wms-utils.js.html +1 -1
- package/coverage/map/common/wmts-utils.js.html +1 -1
- package/lib/core/client/components/collection/KBoard.vue +6 -0
- package/lib/core/client/components/collection/KColumn.vue +2 -2
- package/lib/core/client/components/collection/KHistory.vue +14 -6
- package/lib/core/client/components/collection/KHistoryEntry.vue +7 -3
- package/lib/core/client/components/form/KFileField.vue +11 -40
- package/lib/core/client/components/frame/KChipsPane.vue +2 -2
- package/lib/core/client/components/input/KOptionsChooser.vue +2 -2
- package/lib/core/client/i18n/core_en.json +7 -1
- package/lib/core/client/i18n/core_fr.json +7 -1
- package/lib/core/client/index.js +18 -0
- package/lib/core/client/index.js.map +1 -1
- package/lib/core/client/layout.js +8 -1
- package/lib/core/client/layout.js.map +1 -1
- package/lib/core/client/mixins/mixin.base-collection.js +8 -2
- package/lib/core/client/mixins/mixin.base-collection.js.map +1 -1
- package/lib/core/client/reader.js +54 -0
- package/lib/core/client/reader.js.map +1 -0
- package/lib/core/client/readers/index.js +30 -0
- package/lib/core/client/readers/index.js.map +1 -0
- package/lib/core/client/readers/reader.csv.js +43 -0
- package/lib/core/client/readers/reader.csv.js.map +1 -0
- package/lib/core/client/readers/reader.json.js +38 -0
- package/lib/core/client/readers/reader.json.js.map +1 -0
- package/lib/core/client/services/index.js +1 -3
- package/lib/core/client/services/index.js.map +1 -1
- package/lib/core/client/time.js +4 -1
- package/lib/core/client/time.js.map +1 -1
- package/lib/map/api/hooks/hooks.query.js +30 -13
- package/lib/map/api/hooks/hooks.query.js.map +1 -1
- package/lib/map/client/components/KCaptureToolbar.vue +156 -0
- package/lib/map/client/components/KFeaturesFilter.vue +3 -1
- package/lib/map/client/components/KLayerEditionToolbar.vue +19 -11
- package/lib/map/client/components/KLayerStyleEditor.vue +2 -1
- package/lib/map/client/components/KLayerStyleForm.vue +34 -23
- package/lib/map/client/components/KLocationMap.vue +3 -1
- package/lib/map/client/components/KMeasureTool.vue +340 -0
- package/lib/map/client/components/KPositionIndicator.vue +1 -0
- package/lib/map/client/components/KTimeline.vue +7 -8
- package/lib/map/client/components/catalog/KImportLayer.vue +8 -35
- package/lib/map/client/components/catalog/KLayersSelector.vue +13 -11
- package/lib/map/client/components/form/KOwsLayerField.vue +7 -0
- package/lib/map/client/components/widget/KMapillaryViewer.vue +1 -1
- package/lib/map/client/components/widget/KTimeSeries.vue +81 -3
- package/lib/map/client/i18n/map_en.json +43 -5
- package/lib/map/client/i18n/map_fr.json +43 -5
- package/lib/map/client/init.js +6 -1
- package/lib/map/client/init.js.map +1 -1
- package/lib/map/client/leaflet/MaskLayer.js +12 -3
- package/lib/map/client/leaflet/MaskLayer.js.map +1 -1
- package/lib/map/client/mixins/globe/mixin.base-globe.js +3 -5
- package/lib/map/client/mixins/globe/mixin.base-globe.js.map +1 -1
- package/lib/map/client/mixins/globe/mixin.geojson-layers.js +0 -4
- package/lib/map/client/mixins/globe/mixin.geojson-layers.js.map +1 -1
- package/lib/map/client/mixins/globe/mixin.popup.js +4 -0
- package/lib/map/client/mixins/globe/mixin.popup.js.map +1 -1
- package/lib/map/client/mixins/globe/mixin.tooltip.js +4 -0
- package/lib/map/client/mixins/globe/mixin.tooltip.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.base-map.js +46 -7
- package/lib/map/client/mixins/map/mixin.base-map.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.canvas-layers.js +2 -0
- package/lib/map/client/mixins/map/mixin.canvas-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.file-layers.js +47 -101
- package/lib/map/client/mixins/map/mixin.file-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.geojson-layers.js +9 -5
- package/lib/map/client/mixins/map/mixin.geojson-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.heatmap-layers.js +0 -4
- package/lib/map/client/mixins/map/mixin.heatmap-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.popup.js +4 -0
- package/lib/map/client/mixins/map/mixin.popup.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.tooltip.js +4 -0
- package/lib/map/client/mixins/map/mixin.tooltip.js.map +1 -1
- package/lib/map/client/mixins/mixin.activity.js +2 -0
- package/lib/map/client/mixins/mixin.activity.js.map +1 -1
- package/lib/map/client/mixins/mixin.context.js +26 -3
- package/lib/map/client/mixins/mixin.context.js.map +1 -1
- package/lib/map/client/mixins/mixin.feature-service.js +4 -4
- package/lib/map/client/mixins/mixin.feature-service.js.map +1 -1
- package/lib/map/client/mixins/mixin.infobox.js +4 -0
- package/lib/map/client/mixins/mixin.infobox.js.map +1 -1
- package/lib/map/client/readers/index.js +42 -0
- package/lib/map/client/readers/index.js.map +1 -0
- package/lib/map/client/readers/reader.geojson.js +59 -0
- package/lib/map/client/readers/reader.geojson.js.map +1 -0
- package/lib/map/client/readers/reader.gpx.js +41 -0
- package/lib/map/client/readers/reader.gpx.js.map +1 -0
- package/lib/map/client/readers/reader.kml.js +41 -0
- package/lib/map/client/readers/reader.kml.js.map +1 -0
- package/lib/map/client/utils.js +2 -1
- package/lib/map/client/utils.js.map +1 -1
- package/lib/test/client/core/runner.js +1 -2
- package/lib/test/client/core/runner.js.map +1 -1
- package/lib/test/client/core/utils.js +58 -38
- package/lib/test/client/core/utils.js.map +1 -1
- package/lib/test/client/map/catalog.js +50 -49
- package/lib/test/client/map/catalog.js.map +1 -1
- package/package.json +3 -3
- package/.nyc_output/27204015-ebfd-456f-a3bb-6a94f71946b8.json +0 -1
- package/.nyc_output/d3d1fa81-57ca-4287-8fbe-96466b0e5aa1.json +0 -1
- package/.nyc_output/e921974a-3076-4e89-8dbf-6f37bef10583.json +0 -1
- package/.nyc_output/fb790367-ba9f-474f-84c1-f836caf9f50a.json +0 -1
- package/.nyc_output/processinfo/0f1a87aa-d3bb-4c61-8c1e-12294055358d.json +0 -1
- package/.nyc_output/processinfo/8be4cd9f-124a-41f9-80f4-f267ced63c86.json +0 -1
- package/.nyc_output/processinfo/a63b0924-fd09-4e30-974f-cb4be2243b66.json +0 -1
- package/.nyc_output/processinfo/d3d1fa81-57ca-4287-8fbe-96466b0e5aa1.json +0 -1
- package/.nyc_output/processinfo/e921974a-3076-4e89-8dbf-6f37bef10583.json +0 -1
- package/.nyc_output/processinfo/fb790367-ba9f-474f-84c1-f836caf9f50a.json +0 -1
- package/extras/testcafe/Dockerfile +0 -48
- package/extras/testcafe/docker-entrypoint.sh +0 -27
- package/extras/testcafe/page-models/core/account.js +0 -75
- package/extras/testcafe/page-models/core/base-collection.js +0 -41
- package/extras/testcafe/page-models/core/base-page.js +0 -25
- package/extras/testcafe/page-models/core/groups.js +0 -36
- package/extras/testcafe/page-models/core/index.js +0 -140
- package/extras/testcafe/page-models/core/layout.js +0 -145
- package/extras/testcafe/page-models/core/members.js +0 -98
- package/extras/testcafe/page-models/core/organisations.js +0 -76
- package/extras/testcafe/page-models/core/screens.js +0 -99
- package/extras/testcafe/page-models/core/tags.js +0 -21
- package/extras/testcafe/page-models/map/add-layer.js +0 -51
- package/extras/testcafe/page-models/map/catalog.js +0 -132
- package/extras/testcafe/page-models/map/index.js +0 -36
- package/extras/testcafe/page-models/map/map-activity.js +0 -42
- package/extras/testcafe/page-models/map/timeline.js +0 -67
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"parent":null,"pid":32208,"argv":["D:\\Applications\\NodeJS\\node.exe","D:\\Applications\\NodeJS\\node_modules\\npm\\bin\\npm-cli.js","run","mocha"],"execArgv":[],"cwd":"D:\\Development\\kalisio\\kdk","time":1632472418005,"ppid":22080,"coverageFilename":"D:\\Development\\kalisio\\kdk\\.nyc_output\\0f1a87aa-d3bb-4c61-8c1e-12294055358d.json","externalId":"","uuid":"0f1a87aa-d3bb-4c61-8c1e-12294055358d","files":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"parent":"d3d1fa81-57ca-4287-8fbe-96466b0e5aa1","pid":32328,"argv":["D:\\Applications\\NodeJS\\node.exe","D:\\Applications\\nvm\\v12.16.1\\node_modules\\npm\\bin\\npm-cli.js","run","mocha:core"],"execArgv":[],"cwd":"D:\\Development\\kalisio\\kdk","time":1632472419168,"ppid":3956,"coverageFilename":"D:\\Development\\kalisio\\kdk\\.nyc_output\\8be4cd9f-124a-41f9-80f4-f267ced63c86.json","externalId":"","uuid":"8be4cd9f-124a-41f9-80f4-f267ced63c86","files":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"parent":"8be4cd9f-124a-41f9-80f4-f267ced63c86","pid":23772,"argv":["D:\\Applications\\NodeJS\\node.exe","D:\\Development\\kalisio\\kdk\\node_modules\\cross-env\\dist\\bin\\cross-env.js","NODE_CONFIG_DIR=./test/api/core/config/","mocha","test/api/core/**/*.test.js","--exit","--require","babel-core/register"],"execArgv":[],"cwd":"D:\\Development\\kalisio\\kdk","time":1632472419845,"ppid":21896,"coverageFilename":"D:\\Development\\kalisio\\kdk\\.nyc_output\\a63b0924-fd09-4e30-974f-cb4be2243b66.json","externalId":"","uuid":"a63b0924-fd09-4e30-974f-cb4be2243b66","files":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"parent":"0f1a87aa-d3bb-4c61-8c1e-12294055358d","pid":3956,"argv":["D:\\Applications\\NodeJS\\node.exe","D:\\Development\\kalisio\\kdk\\node_modules\\npm-run-all\\bin\\npm-run-all\\index.js","--serial","mocha:**"],"execArgv":[],"cwd":"D:\\Development\\kalisio\\kdk","time":1632472418701,"ppid":12720,"coverageFilename":"D:\\Development\\kalisio\\kdk\\.nyc_output\\d3d1fa81-57ca-4287-8fbe-96466b0e5aa1.json","externalId":"","uuid":"d3d1fa81-57ca-4287-8fbe-96466b0e5aa1","files":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"parent":null,"pid":23540,"argv":["D:\\Applications\\NodeJS\\node.exe","D:\\Development\\kalisio\\kdk\\node_modules\\nyc\\bin\\nyc.js","npm","run","mocha"],"execArgv":[],"cwd":"D:\\Development\\kalisio\\kdk","time":1632472392691,"ppid":4620,"coverageFilename":"D:\\Development\\kalisio\\kdk\\.nyc_output\\e921974a-3076-4e89-8dbf-6f37bef10583.json","externalId":"","uuid":"e921974a-3076-4e89-8dbf-6f37bef10583","files":["D:\\Development\\kalisio\\kdk\\core\\api\\application.js","D:\\Development\\kalisio\\kdk\\core\\api\\authentication.js","D:\\Development\\kalisio\\kdk\\core\\api\\db.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.account.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.authentication.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.authorisations.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.devices.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.groups.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.logger.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.model.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.organisations.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.pusher.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.query.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.service.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.storage.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.tags.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\hooks.users.js","D:\\Development\\kalisio\\kdk\\core\\api\\hooks\\index.js","D:\\Development\\kalisio\\kdk\\core\\api\\index.js","D:\\Development\\kalisio\\kdk\\core\\api\\marshall.js","D:\\Development\\kalisio\\kdk\\core\\api\\models\\groups.model.mongodb.js","D:\\Development\\kalisio\\kdk\\core\\api\\models\\organisations.model.mongodb.js","D:\\Development\\kalisio\\kdk\\core\\api\\models\\tags.model.mongodb.js","D:\\Development\\kalisio\\kdk\\core\\api\\models\\users.model.mongodb.js","D:\\Development\\kalisio\\kdk\\core\\api\\oauth2-handler.js","D:\\Development\\kalisio\\kdk\\core\\api\\oauth2-verifier.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\account\\account.hooks.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\account\\account.service.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\authorisations\\authorisations.hooks.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\authorisations\\authorisations.service.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\databases\\databases.hooks.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\databases\\databases.service.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\devices\\devices.hooks.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\devices\\devices.service.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\groups\\groups.hooks.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\index.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\mailer\\mailer.hooks.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\mailer\\mailer.service.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\organisations\\organisations.hooks.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\organisations\\organisations.service.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\pusher\\pusher.channels.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\pusher\\pusher.hooks.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\pusher\\pusher.service.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\storage\\storage.hooks.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\tags\\tags.hooks.js","D:\\Development\\kalisio\\kdk\\core\\api\\services\\users\\users.hooks.js","D:\\Development\\kalisio\\kdk\\core\\common\\errors.js","D:\\Development\\kalisio\\kdk\\core\\common\\index.js","D:\\Development\\kalisio\\kdk\\core\\common\\permissions.js","D:\\Development\\kalisio\\kdk\\map\\api\\hooks\\hooks.catalog.js","D:\\Development\\kalisio\\kdk\\map\\api\\hooks\\hooks.query.js","D:\\Development\\kalisio\\kdk\\map\\api\\hooks\\index.js","D:\\Development\\kalisio\\kdk\\map\\api\\index.js","D:\\Development\\kalisio\\kdk\\map\\api\\marshall.js","D:\\Development\\kalisio\\kdk\\map\\api\\models\\alerts.model.mongodb.js","D:\\Development\\kalisio\\kdk\\map\\api\\models\\catalog.model.mongodb.js","D:\\Development\\kalisio\\kdk\\map\\api\\models\\features.model.mongodb.js","D:\\Development\\kalisio\\kdk\\map\\api\\services\\alerts\\alerts.hooks.js","D:\\Development\\kalisio\\kdk\\map\\api\\services\\alerts\\alerts.service.js","D:\\Development\\kalisio\\kdk\\map\\api\\services\\catalog\\catalog.hooks.js","D:\\Development\\kalisio\\kdk\\map\\api\\services\\daptiles\\daptiles.service.js","D:\\Development\\kalisio\\kdk\\map\\api\\services\\features\\features.hooks.js","D:\\Development\\kalisio\\kdk\\map\\api\\services\\geocoder\\geocoder.hooks.js","D:\\Development\\kalisio\\kdk\\map\\api\\services\\geocoder\\geocoder.service.js","D:\\Development\\kalisio\\kdk\\map\\api\\services\\index.js","D:\\Development\\kalisio\\kdk\\map\\common\\dynamic-grid-source.js","D:\\Development\\kalisio\\kdk\\map\\common\\errors.js","D:\\Development\\kalisio\\kdk\\map\\common\\geotiff-grid-source.js","D:\\Development\\kalisio\\kdk\\map\\common\\grid.js","D:\\Development\\kalisio\\kdk\\map\\common\\index.js","D:\\Development\\kalisio\\kdk\\map\\common\\meteo-model-grid-source.js","D:\\Development\\kalisio\\kdk\\map\\common\\moment-utils.js","D:\\Development\\kalisio\\kdk\\map\\common\\opendap-grid-source.js","D:\\Development\\kalisio\\kdk\\map\\common\\opendap-utils.js","D:\\Development\\kalisio\\kdk\\map\\common\\permissions.js","D:\\Development\\kalisio\\kdk\\map\\common\\time-based-grid-source.js","D:\\Development\\kalisio\\kdk\\map\\common\\tms-utils.js","D:\\Development\\kalisio\\kdk\\map\\common\\wcs-grid-source.js","D:\\Development\\kalisio\\kdk\\map\\common\\wcs-utils.js","D:\\Development\\kalisio\\kdk\\map\\common\\weacast-grid-source.js","D:\\Development\\kalisio\\kdk\\map\\common\\wfs-utils.js","D:\\Development\\kalisio\\kdk\\map\\common\\wms-utils.js","D:\\Development\\kalisio\\kdk\\map\\common\\wmts-utils.js"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"parent":null,"pid":17376,"argv":["D:\\Applications\\NodeJS\\node.exe","D:\\Applications\\NodeJS\\node_modules\\npm\\bin\\npm-cli.js","prefix","-g"],"execArgv":[],"cwd":"D:\\Development\\kalisio\\kdk","time":1632472417378,"ppid":10324,"coverageFilename":"D:\\Development\\kalisio\\kdk\\.nyc_output\\fb790367-ba9f-474f-84c1-f836caf9f50a.json","externalId":"","uuid":"fb790367-ba9f-474f-84c1-f836caf9f50a","files":[]}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
FROM alpine:edge
|
|
2
|
-
|
|
3
|
-
ARG TESTCAFE_VERSION=1.8.6
|
|
4
|
-
ARG TESTCAFE_VUE_SELECTORS_VERSION=3.1.0
|
|
5
|
-
ARG MONGODB_DRIVER_VERSION=3.1.4
|
|
6
|
-
ARG PIXELMATCH_VERSION=5.2.0
|
|
7
|
-
ARG PNGJS_VERSION=5.0.0
|
|
8
|
-
ARG TESTCAFE_BROWSERS="firefox:headless"
|
|
9
|
-
ARG TESTCAFE_SPEED=0.75
|
|
10
|
-
ARG TESTCAFE_SCREEN_WIDTH=1024
|
|
11
|
-
ARG TESTCAFE_SCREEN_HEIGHT=720
|
|
12
|
-
|
|
13
|
-
RUN \
|
|
14
|
-
apk --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing/ --repository http://dl-cdn.alpinelinux.org/alpine/v3.10/main/ upgrade && \
|
|
15
|
-
apk --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing/ --repository http://dl-cdn.alpinelinux.org/alpine/v3.10/main/ add \
|
|
16
|
-
libevent nodejs npm chromium firefox-esr xwininfo xvfb dbus eudev ttf-freefont fluxbox procps curl unzip bash vim && \
|
|
17
|
-
cd /tmp && curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip && unzip rclone-current-linux-amd64.zip && \
|
|
18
|
-
cp /tmp/rclone-*-linux-amd64/rclone /usr/bin && rm -r /tmp/rclone*
|
|
19
|
-
|
|
20
|
-
WORKDIR /opt/testcafe
|
|
21
|
-
RUN adduser -D -h /opt/testcafe user
|
|
22
|
-
USER user
|
|
23
|
-
|
|
24
|
-
RUN npm install \
|
|
25
|
-
testcafe@${TESTCAFE_VERSION} \
|
|
26
|
-
testcafe-vue-selectors@${TESTCAFE_VUE_SELECTORS_VERSION} \
|
|
27
|
-
testcafe-reporter-slack \
|
|
28
|
-
mongodb@${MONGODB_DRIVER_VERSION} \
|
|
29
|
-
pixelmatch@${PIXELMATCH_VERSION} \
|
|
30
|
-
pngjs@${PNGJS_VERSION} \
|
|
31
|
-
&& npm cache clean --force \
|
|
32
|
-
&& rm -rf /tmp/*
|
|
33
|
-
|
|
34
|
-
ENV NODE_PATH=/opt/testcafe/node_modules
|
|
35
|
-
ENV PATH=${PATH}:/opt/testcafe/node_modules/.bin
|
|
36
|
-
|
|
37
|
-
USER root
|
|
38
|
-
COPY docker-entrypoint.sh /
|
|
39
|
-
RUN chmod +x /docker-entrypoint.sh
|
|
40
|
-
|
|
41
|
-
ENV SCREEN_WIDTH=${TESTCAFE_SCREEN_WIDTH}
|
|
42
|
-
ENV SCREEN_HEIGHT=${TESTCAFE_SCREEN_HEIGHT}
|
|
43
|
-
ENV BROWSERS=${TESTCAFE_BROWSERS}
|
|
44
|
-
ENV SPEED=${TESTCAFE_SPEED}
|
|
45
|
-
|
|
46
|
-
EXPOSE 1337 1338
|
|
47
|
-
USER user
|
|
48
|
-
ENTRYPOINT [ "/docker-entrypoint.sh" ]
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
|
|
3
|
-
dbus-daemon --session --fork
|
|
4
|
-
Xvfb :1 -screen 0 "${SCREEN_WIDTH}x${SCREEN_HEIGHT}x24" >/dev/null 2>&1 &
|
|
5
|
-
export DISPLAY=:1.0
|
|
6
|
-
fluxbox >/dev/null 2>&1 &
|
|
7
|
-
|
|
8
|
-
testcafe ${BROWSERS} --ports 1337,1338 --skip-js-errors --speed ${SPEED} -s path=screenshots,takeOnFails=true -r spec,slack "/tests/*.test.js" "$@" 2>&1 > /tmp/testcafe.log
|
|
9
|
-
RESULT=$?
|
|
10
|
-
|
|
11
|
-
# Upload artefacts somewhere ?
|
|
12
|
-
if [ -n "$BUILD_BUCKET" ]; then
|
|
13
|
-
# testcafe test log
|
|
14
|
-
rclone copy /tmp/testcafe.log $BUILD_BUCKET
|
|
15
|
-
|
|
16
|
-
# screenshots
|
|
17
|
-
tar cf /tmp/screenshots.tar screenshots
|
|
18
|
-
rclone copy /tmp/screenshots.tar $BUILD_BUCKET
|
|
19
|
-
|
|
20
|
-
# notify on slack
|
|
21
|
-
if [ -n "$TESTCAFE_SLACK_WEBHOOK" ]; then
|
|
22
|
-
PAYLOAD=$(printf '{"text":"To fetch testcafe test artefacts, use:", "attachments":[{"color":"#7b36a6", "text":"*rclone copy %s .*"}]}' $BUILD_BUCKET)
|
|
23
|
-
curl -X POST -H 'Content-type: application/json' --data "$PAYLOAD" $TESTCAFE_SLACK_WEBHOOK
|
|
24
|
-
fi
|
|
25
|
-
fi
|
|
26
|
-
|
|
27
|
-
exit $RESULT
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { Selector } from 'testcafe'
|
|
2
|
-
import VueSelector from 'testcafe-vue-selectors'
|
|
3
|
-
import BasePage from './base-page'
|
|
4
|
-
|
|
5
|
-
export default class Account extends BasePage {
|
|
6
|
-
constructor () {
|
|
7
|
-
super()
|
|
8
|
-
// Profile
|
|
9
|
-
this.profileEditor = VueSelector('k-account-activity k-editor')
|
|
10
|
-
this.fileInput = Selector('.dz-hidden-input')
|
|
11
|
-
// Security
|
|
12
|
-
this.passwordBlock = Selector('#password-block')
|
|
13
|
-
this.changePasswordScreen = VueSelector('k-change-password')
|
|
14
|
-
this.emailBlock = Selector('#email-block')
|
|
15
|
-
this.changeEmailScreen = VueSelector('k-send-change-identity')
|
|
16
|
-
// Danger zone
|
|
17
|
-
this.deleteBlock = Selector('#delete-block')
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
static get MANAGE_ACCOUNT () {
|
|
21
|
-
return 'manage-account'
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
static get PROFILE () {
|
|
25
|
-
return 'profile'
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
static get SECURITY () {
|
|
29
|
-
return 'security'
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
static get DANGER_ZONE () {
|
|
33
|
-
return 'danger-zone'
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
async updateProfile (test, avatar, name) {
|
|
37
|
-
await test
|
|
38
|
-
.click(VueSelector('k-editor k-attachment-field'))
|
|
39
|
-
.setFilesToUpload(Selector('.dz-hidden-input'), avatar)
|
|
40
|
-
.wait(Account.LONG_WAIT)
|
|
41
|
-
.typeText(VueSelector('k-text-field'), name, { replace: true })
|
|
42
|
-
.click(VueSelector('k-editor').find('#apply-button'))
|
|
43
|
-
.wait(Account.EXTRA_LONG_WAIT)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
async updatePassword (test, oldPassword, newPassword) {
|
|
47
|
-
await test
|
|
48
|
-
.click(this.passwordBlock.find('button'))
|
|
49
|
-
.wait(Account.SHORT_WAIT)
|
|
50
|
-
.typeText(VueSelector('k-password-field').nth(0), oldPassword, { replace: true })
|
|
51
|
-
.typeText(VueSelector('k-password-field').nth(1), newPassword, { replace: true })
|
|
52
|
-
.typeText(VueSelector('k-password-field').nth(2), newPassword, { replace: true })
|
|
53
|
-
.click(this.changePasswordScreen.find('#change-password'))
|
|
54
|
-
.wait(Account.EXTRA_LONG_WAIT)
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
async updateEmail (test, email, password) {
|
|
58
|
-
await test
|
|
59
|
-
.click(this.emailBlock.find('button'))
|
|
60
|
-
.wait(Account.SHORT_WAIT)
|
|
61
|
-
.typeText(VueSelector('k-password-field'), password, { replace: true })
|
|
62
|
-
.typeText(VueSelector('k-email-field'), email, { replace: true })
|
|
63
|
-
.click(this.changeEmailScreen.find('#change-identity'))
|
|
64
|
-
.wait(Account.EXTRA_LONG_WAIT)
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
async delete (test, name) {
|
|
68
|
-
await test
|
|
69
|
-
.click(this.deleteBlock.find('button'))
|
|
70
|
-
.wait(Account.SHORT_WAIT)
|
|
71
|
-
.typeText(Selector('.q-dialog-plugin input[type=text]'), name)
|
|
72
|
-
.click(Selector('.q-dialog-plugin button').nth(1))
|
|
73
|
-
.wait(Account.EXTRA_LONG_WAIT)
|
|
74
|
-
}
|
|
75
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Selector } from 'testcafe'
|
|
2
|
-
import VueSelector from 'testcafe-vue-selectors'
|
|
3
|
-
import BasePage from './base-page'
|
|
4
|
-
|
|
5
|
-
export default class BaseCollection extends BasePage {
|
|
6
|
-
constructor (grid, type) {
|
|
7
|
-
super()
|
|
8
|
-
this.collection = VueSelector(`ref:${grid} ${type}`)
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
async checkExists (test, name) {
|
|
12
|
-
await test.expect(this.collection.withText(name).exists).ok()
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
async checkNotExists (test, name) {
|
|
16
|
-
await test.expect(this.collection.withText(name).exists).notOk()
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
async clickAction (test, name, action, wait = BaseCollection.SHORT_WAIT) {
|
|
20
|
-
await test
|
|
21
|
-
.click(this.collection.withText(name).find(`#${action}`))
|
|
22
|
-
.wait(wait)
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
async clickMenuEntry (test, name, menu, entry, wait = BaseCollection.SHORT_WAIT) {
|
|
26
|
-
await test
|
|
27
|
-
.click(this.collection.withText(name).find(`#${menu}`))
|
|
28
|
-
.click(Selector('.q-menu').find(`#${entry}`))
|
|
29
|
-
.wait(wait)
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
async count () {
|
|
33
|
-
const itemsCount = await this.collection.count
|
|
34
|
-
return itemsCount
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
async checkCount (test, count) {
|
|
38
|
-
const itemsCount = await this.collection.count
|
|
39
|
-
await test.expect(itemsCount).eql(count, 'Invalid items count')
|
|
40
|
-
}
|
|
41
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Selector } from 'testcafe'
|
|
2
|
-
|
|
3
|
-
export default class BasePage {
|
|
4
|
-
constructor () {
|
|
5
|
-
this.error = Selector('.q-notification')
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
static get SHORT_WAIT () {
|
|
9
|
-
return 500
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
static get LONG_WAIT () {
|
|
13
|
-
return 1000
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
static get EXTRA_LONG_WAIT () {
|
|
17
|
-
return 5000
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
// Error helper
|
|
21
|
-
async isErrorVisible () {
|
|
22
|
-
const isVisible = await this.error.visible
|
|
23
|
-
return isVisible
|
|
24
|
-
}
|
|
25
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { Selector } from 'testcafe'
|
|
2
|
-
import VueSelector from 'testcafe-vue-selectors'
|
|
3
|
-
import BaseCollection from './base-collection'
|
|
4
|
-
import Layout from './layout'
|
|
5
|
-
|
|
6
|
-
export default class Groups extends BaseCollection {
|
|
7
|
-
constructor () {
|
|
8
|
-
super('groupsGrid', 'QCard')
|
|
9
|
-
this.layout = new Layout()
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
async create (test, data) {
|
|
13
|
-
await this.layout.clickFab(test, 'create-group')
|
|
14
|
-
await test
|
|
15
|
-
.typeText(VueSelector('k-text-field').nth(0), data.name, { replace: true })
|
|
16
|
-
.typeText(VueSelector('k-text-field').nth(1), data.description, { replace: true })
|
|
17
|
-
.click(Selector('.q-dialog .q-card button[type=button]').nth(1))
|
|
18
|
-
.wait(2000)
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
async edit (test, name, data) {
|
|
22
|
-
await this.clickAction(test, name, 'edit-group')
|
|
23
|
-
await test
|
|
24
|
-
.typeText(VueSelector('k-text-field').nth(0), data.name, { replace: true })
|
|
25
|
-
.typeText(VueSelector('k-text-field').nth(1), data.description, { replace: true })
|
|
26
|
-
.click(Selector('.q-dialog #apply-button'))
|
|
27
|
-
.wait(Groups.LONG_WAIT)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
async delete (test, name) {
|
|
31
|
-
await this.clickAction(test, name, 'remove-group')
|
|
32
|
-
await test
|
|
33
|
-
.click(Selector('.q-dialog .q-btn').nth(1))
|
|
34
|
-
.wait(Groups.EXTRA_LONG_WAIT)
|
|
35
|
-
}
|
|
36
|
-
}
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import * as fs from 'fs'
|
|
2
|
-
import png from 'pngjs'
|
|
3
|
-
import pixelmatch from 'pixelmatch'
|
|
4
|
-
import { ClientFunction } from 'testcafe'
|
|
5
|
-
import BasePage from './base-page'
|
|
6
|
-
import BaseCollection from './base-collection'
|
|
7
|
-
import Screens from './screens'
|
|
8
|
-
import Layout from './layout'
|
|
9
|
-
import Account from './account'
|
|
10
|
-
import Organisations from './organisations'
|
|
11
|
-
import OrganisationSettings from './organisation-settings'
|
|
12
|
-
import Members from './members'
|
|
13
|
-
import Tags from './tags'
|
|
14
|
-
import Groups from './groups'
|
|
15
|
-
|
|
16
|
-
export { Screens }
|
|
17
|
-
export { BasePage }
|
|
18
|
-
export { BaseCollection }
|
|
19
|
-
export { Layout }
|
|
20
|
-
export { Account }
|
|
21
|
-
export { Organisations }
|
|
22
|
-
export { OrganisationSettings }
|
|
23
|
-
export { Members }
|
|
24
|
-
export { Tags }
|
|
25
|
-
export { Groups }
|
|
26
|
-
|
|
27
|
-
// Access store
|
|
28
|
-
export const getFromStore = ClientFunction((path) => window.$store.get(path))
|
|
29
|
-
|
|
30
|
-
// Access Feathers services
|
|
31
|
-
export const api = {
|
|
32
|
-
logout: ClientFunction(() => window.$api.logout()),
|
|
33
|
-
get: ClientFunction((service, id) => window.$api.getService(service).get(id)),
|
|
34
|
-
find: ClientFunction((service, params) => window.$api.getService(service).find(params)),
|
|
35
|
-
remove: ClientFunction((service, id) => window.$api.getService(service).remove(id))
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// Acces window size
|
|
39
|
-
export const getWindowInnerWidth = ClientFunction(() => window.innerWidth)
|
|
40
|
-
export const getWindowInnerHeight = ClientFunction(() => window.innerHeight)
|
|
41
|
-
|
|
42
|
-
// Access routes
|
|
43
|
-
const baseUrl = process.env.APP_URL || (process.env.CLIENT_PORT ? 'http://localhost:' + process.env.CLIENT_PORT : (process.env.NODE_ENV === 'production' ? 'http://localhost:8081' : 'http://localhost:8082'))
|
|
44
|
-
export const getUrl = (path) => path ? baseUrl + '/#/' + path : baseUrl
|
|
45
|
-
export const getCurrentUrl = ClientFunction(() => window.location.href)
|
|
46
|
-
export const goBack = ClientFunction(() => window.history.back())
|
|
47
|
-
export const refresh = ClientFunction(() => document.location.reload())
|
|
48
|
-
|
|
49
|
-
// Access console errors
|
|
50
|
-
export const checkNoClientError = async (test) => {
|
|
51
|
-
const { error } = await test.getBrowserConsoleMessages()
|
|
52
|
-
await test.expect(error[0]).notOk()
|
|
53
|
-
}
|
|
54
|
-
export const checkClientError = async (test) => {
|
|
55
|
-
const { error } = await test.getBrowserConsoleMessages()
|
|
56
|
-
await test.expect(error[0]).ok()
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// Screenshot helpers
|
|
60
|
-
|
|
61
|
-
/* Given a screenshot key (a string) this will provide the full path
|
|
62
|
-
* of the associated reference screenshot file.
|
|
63
|
-
*/
|
|
64
|
-
function refScreenshot (key) {
|
|
65
|
-
const projectPath = process.cwd()
|
|
66
|
-
return `${projectPath}/test/data/screenrefs/${key}.png`
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/* Given a screenshot key (a string) this will provide the path
|
|
70
|
-
* of the test run screenshot file. If 'absolute' is false this
|
|
71
|
-
* will return the relative path from the screenshot run folder.
|
|
72
|
-
*/
|
|
73
|
-
function runScreenshot (test, key, absolute = false) {
|
|
74
|
-
const screenshotBase = test.testRun.opts.screenshots.path
|
|
75
|
-
return absolute ? `${screenshotBase}/run/${key}.png` : `run/${key}.png`
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/* Given a reference screenshot key and a run screenshot key, this
|
|
79
|
-
* will perform screenshot comparison and return the diffRatio as
|
|
80
|
-
* a percentage of the number of mismatched pixels.
|
|
81
|
-
*/
|
|
82
|
-
function diffScreenshots (test, refKey, runKey, diffOpts = {}) {
|
|
83
|
-
const refPath = refScreenshot(refKey)
|
|
84
|
-
const runPath = runScreenshot(test, runKey, true)
|
|
85
|
-
const ref = png.PNG.sync.read(fs.readFileSync(refPath))
|
|
86
|
-
const run = png.PNG.sync.read(fs.readFileSync(runPath))
|
|
87
|
-
const { width, height } = ref
|
|
88
|
-
const diff = new png.PNG({ width, height })
|
|
89
|
-
|
|
90
|
-
const defOpts = {
|
|
91
|
-
alpha: 0.3,
|
|
92
|
-
diffColor: [255, 0, 0],
|
|
93
|
-
diffColorAlt: [0, 255, 0]
|
|
94
|
-
}
|
|
95
|
-
const opts = Object.assign(defOpts, diffOpts)
|
|
96
|
-
|
|
97
|
-
const numDiffs = pixelmatch(ref.data, run.data, diff.data, width, height, opts)
|
|
98
|
-
const diffRatio = 100.0 * (numDiffs / (width * height))
|
|
99
|
-
return { diffRatio, diff }
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/* Just takes a screenshot and write it on disk as PNG
|
|
103
|
-
* in a standard location
|
|
104
|
-
*/
|
|
105
|
-
export async function takeScreenshot (test, runKey) {
|
|
106
|
-
await test.takeScreenshot({ path: runScreenshot(test, runKey) })
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/* Makes sure screenshot matches between run and ref screenshot keys.
|
|
110
|
-
* If refKey is not provided, it will use runKey as refKey.
|
|
111
|
-
* maxDiffRatio is the allowed maximum percentage of mismatched pixels, if computed
|
|
112
|
-
* diff ratio is higher, test will fail.
|
|
113
|
-
* Pixel comparison uses threshold value [0,1] to flag pixels as mismatching (see pixelmatch module)
|
|
114
|
-
*/
|
|
115
|
-
export async function assertScreenshotMatches (test, runKey, { refKey = null, maxDiffRatio = 1.0, threshold = 0.1 } = {}) {
|
|
116
|
-
const keyRef = refKey || runKey
|
|
117
|
-
await test.takeScreenshot({ path: runScreenshot(test, runKey) })
|
|
118
|
-
const diff = diffScreenshots(test, keyRef, runKey, { threshold })
|
|
119
|
-
if (diff.diffRatio > maxDiffRatio) {
|
|
120
|
-
const output = runScreenshot(test, `diff-${runKey}`, true)
|
|
121
|
-
fs.writeFileSync(output, png.PNG.sync.write(diff.diff))
|
|
122
|
-
throw new Error(`Diff ratio for '${runKey}' is too high: ${diff.diffRatio.toPrecision(2)}%`)
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/* Makes sure screenshot mismatches between run and ref screenshot keys.
|
|
127
|
-
* If refKey is not provided, it will use runKey as refKey.
|
|
128
|
-
* minDiffRatio is the allowed minimum percentage of mismatched pixels, if computed
|
|
129
|
-
* diff ratio is lower, test will fail.
|
|
130
|
-
* Pixel comparison uses threshold value [0,1] to flag pixels as mismatching (see pixelmatch module)
|
|
131
|
-
*/
|
|
132
|
-
export async function assertScreenshotMismatches (test, runKey, { refKey = null, minDiffRatio = 50.0, threshold = 0.1 } = {}) {
|
|
133
|
-
const keyRef = refKey || runKey
|
|
134
|
-
const diff = diffScreenshots(test, keyRef, runKey, { threshold })
|
|
135
|
-
if (diff.diffRatio < minDiffRatio) {
|
|
136
|
-
const output = runScreenshot(test, `diff-${runKey}`, true)
|
|
137
|
-
fs.writeFileSync(output, png.PNG.sync.write(diff.diff))
|
|
138
|
-
throw new Error(`Diff ratio for '${runKey}' is too low: ${diff.diffRatio.toPrecision(2)}%`)
|
|
139
|
-
}
|
|
140
|
-
}
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import { Selector } from 'testcafe'
|
|
2
|
-
import VueSelector from 'testcafe-vue-selectors'
|
|
3
|
-
import BasePage from './base-page'
|
|
4
|
-
|
|
5
|
-
export default class Layout extends BasePage {
|
|
6
|
-
constructor () {
|
|
7
|
-
super()
|
|
8
|
-
// Openers
|
|
9
|
-
this.leftOpener = Selector('#left-opener')
|
|
10
|
-
this.rightOpener = Selector('#right-opener')
|
|
11
|
-
this.topOpener = Selector('#top-opener')
|
|
12
|
-
this.bottomOpener = Selector('#bottom-opener')
|
|
13
|
-
// Panes
|
|
14
|
-
this.leftPanel = Selector('#left-panel')
|
|
15
|
-
this.topPanel = Selector('#top-panel')
|
|
16
|
-
this.rightPanel = Selector('#right-panel')
|
|
17
|
-
this.bottomPanel = Selector('#bottom-panel')
|
|
18
|
-
// Fab
|
|
19
|
-
this.fab = Selector('#fab')
|
|
20
|
-
// SignupAlert
|
|
21
|
-
this.signupAlert = VueSelector('k-signup-alert')
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
static get ABOUT () {
|
|
25
|
-
return 'about'
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
static get LOGOUT () {
|
|
29
|
-
return 'logout'
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// Openers
|
|
33
|
-
async clickLeftOpener (test) {
|
|
34
|
-
await test
|
|
35
|
-
.click(this.leftOpener)
|
|
36
|
-
.wait(Layout.SHORT_WAIT)
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
async clickRightOpener (test) {
|
|
40
|
-
await test
|
|
41
|
-
.click(this.rightOpener)
|
|
42
|
-
.wait(Layout.SHORT_WAIT)
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
async clickTopOpener (test) {
|
|
46
|
-
await test
|
|
47
|
-
.click(this.topOpener)
|
|
48
|
-
.wait(Layout.SHORT_WAIT)
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
async clickBottomOpener (test) {
|
|
52
|
-
await test
|
|
53
|
-
.click(this.bottomOpener)
|
|
54
|
-
.wait(Layout.SHORT_WAIT)
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// Leftdrawer
|
|
58
|
-
async isLeftPaneOpened () {
|
|
59
|
-
const isVisible = await this.leftPanel.visible
|
|
60
|
-
return isVisible
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
async clickLeftPaneAction (test, action, wait = Layout.SHORT_WAIT) {
|
|
64
|
-
await test
|
|
65
|
-
.click(this.leftPanel.find(`#${action}`))
|
|
66
|
-
.wait(wait)
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
async clickLeftPaneMenuEntry (test, menu, entry) {
|
|
70
|
-
await this.clickLeftPaneAction(test, menu)
|
|
71
|
-
await test
|
|
72
|
-
.click(Selector(`#${entry}`))
|
|
73
|
-
.wait(wait)
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// TopPane
|
|
77
|
-
async isTopPaneOpened () {
|
|
78
|
-
const isVisible = await this.topPanel.visible
|
|
79
|
-
return isVisible
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
async clickTopPaneAction (test, action, wait = Layout.SHORT_WAIT) {
|
|
83
|
-
await test
|
|
84
|
-
.click(this.topPanel.find(`#${action}`))
|
|
85
|
-
.wait(wait)
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
async clickTopPaneMenuEntry (test, menu, entry, wait = Layout.SHORT_WAIT) {
|
|
89
|
-
await this.clickTopPaneAction(test, menu)
|
|
90
|
-
await test
|
|
91
|
-
.click(Selector(`#${entry}`))
|
|
92
|
-
.wait(wait)
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// RightPane
|
|
96
|
-
async isRightPaneOpened () {
|
|
97
|
-
const isVisible = await this.rightPanel.visible
|
|
98
|
-
return isVisible
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
async clickRightPaneAction (test, action, wait = Layout.SHORT_WAIT) {
|
|
102
|
-
await test
|
|
103
|
-
.click(this.rightPanel.find(`#${action}`))
|
|
104
|
-
.wait(wait)
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
// BottomPane
|
|
108
|
-
async isBottomPaneOpened () {
|
|
109
|
-
const isVisible = await this.bottomPanel.visible
|
|
110
|
-
return isVisible
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
async clickBottomPaneAction (test, action, wait = Layout.SHORT_WAIT) {
|
|
114
|
-
await test
|
|
115
|
-
.click(this.bottomPanel.find(`#${action}`))
|
|
116
|
-
.wait(wait)
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
// Fab
|
|
120
|
-
async clickFab (test, action, wait = Layout.SHORT_WAIT) {
|
|
121
|
-
await test
|
|
122
|
-
.click(Selector(`#${action}`))
|
|
123
|
-
.wait(wait)
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
async openAndClickFab (test, action, wait = Layout.SHORT_WAIT) {
|
|
127
|
-
await test
|
|
128
|
-
.click(Selector(this.fab))
|
|
129
|
-
.wait(Layout.SHORT_WAIT)
|
|
130
|
-
.click(this.fab.find(`#${action}`))
|
|
131
|
-
.wait(wait)
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
// Misc
|
|
135
|
-
async closeSignupAlert (test) {
|
|
136
|
-
await test
|
|
137
|
-
.click(Selector('#close-signup-alert'))
|
|
138
|
-
.wait(Layout.SHORT_WAIT)
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
async closeWelcomeDialog (test) {
|
|
142
|
-
await test
|
|
143
|
-
.click(Selector('.q-dialog .q-card button[type=button]').nth(0))
|
|
144
|
-
}
|
|
145
|
-
}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { Selector } from 'testcafe'
|
|
2
|
-
import VueSelector from 'testcafe-vue-selectors'
|
|
3
|
-
import BaseCollection from './base-collection'
|
|
4
|
-
import Layout from './layout'
|
|
5
|
-
|
|
6
|
-
export default class Members extends BaseCollection {
|
|
7
|
-
constructor () {
|
|
8
|
-
super('membersGrid', 'QCard')
|
|
9
|
-
this.layout = new Layout()
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
static get ADD_MEMBER_ENTRY () {
|
|
13
|
-
return 'add-member'
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
async add (test, email, role) {
|
|
17
|
-
await this.layout.clickFab(test, 'add-member')
|
|
18
|
-
await test
|
|
19
|
-
.typeText(VueSelector('k-email-field'), email, { replace: true })
|
|
20
|
-
.wait(Members.SHORT_WAIT)
|
|
21
|
-
.click(Selector('.q-dialog').find('#continue-button'))
|
|
22
|
-
.wait(Members.SHORT_WAIT)
|
|
23
|
-
.click(VueSelector('k-select-field'))
|
|
24
|
-
.wait(Members.SHORT_WAIT)
|
|
25
|
-
.click(Selector('.q-menu .q-item').nth(role))
|
|
26
|
-
.wait(Members.SHORT_WAIT)
|
|
27
|
-
.click(Selector('.q-dialog').find('#add-button'))
|
|
28
|
-
.wait(Members.LONG_WAIT)
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
async invite (test, email, name, role) {
|
|
32
|
-
await this.layout.clickFab(test, 'add-member')
|
|
33
|
-
await test
|
|
34
|
-
.typeText(VueSelector('k-email-field'), email, { replace: true })
|
|
35
|
-
.wait(Members.SHORT_WAIT)
|
|
36
|
-
.click(Selector('.q-dialog').find('#continue-button'))
|
|
37
|
-
.wait(Members.SHORT_WAIT)
|
|
38
|
-
.typeText(VueSelector('k-text-field'), name, { replace: true })
|
|
39
|
-
.click(VueSelector('k-select-field'))
|
|
40
|
-
.wait(Members.SHORT_WAIT)
|
|
41
|
-
.click(Selector('.q-menu .q-item').nth(role))
|
|
42
|
-
.wait(Members.SHORT_WAIT)
|
|
43
|
-
.click(Selector('.q-dialog').find('#add-button'))
|
|
44
|
-
.wait(Members.EXTRA_LONG_WAIT)
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
async tag (test, name, tag) {
|
|
48
|
-
await this.clickAction(test, name, 'tag-member')
|
|
49
|
-
await test
|
|
50
|
-
.wait(Members.LONG_WAIT)
|
|
51
|
-
.typeText(VueSelector('k-tag-field'), tag, { replace: true })
|
|
52
|
-
.pressKey("enter")
|
|
53
|
-
.wait(Members.SHORT_WAIT)
|
|
54
|
-
.click(Selector('.q-dialog .q-card button[type=button]').nth(1))
|
|
55
|
-
.wait(Members.LONG_WAIT)
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
async changeRole (test, name, role) {
|
|
59
|
-
await this.clickAction(test, name, 'change-role')
|
|
60
|
-
await test
|
|
61
|
-
.click(VueSelector('k-select-field'))
|
|
62
|
-
.click(Selector('.q-menu .q-item').nth(role))
|
|
63
|
-
.wait(500)
|
|
64
|
-
.click(Selector('.q-dialog .q-card button[type=button]').nth(1))
|
|
65
|
-
.wait(2000)
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
async delete (test, name) {
|
|
69
|
-
await this.clickMenuEntry(test, name, 'card-overflow-menu', 'remove-member')
|
|
70
|
-
await test
|
|
71
|
-
.click(Selector('.q-dialog .q-btn').nth(1))
|
|
72
|
-
.wait(5000)
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
async joinGroup (test, memberName, groupName, role) {
|
|
76
|
-
await test
|
|
77
|
-
.click(this.collection.withText(memberName).find('#join-group'))
|
|
78
|
-
.typeText(VueSelector('k-item-field'), groupName, { replace: true })
|
|
79
|
-
.wait(Members.LONG_WAIT)
|
|
80
|
-
.click(Selector('.q-menu .q-item').nth(0))
|
|
81
|
-
.click(VueSelector('k-select-field'))
|
|
82
|
-
.wait(Members.SHORT_WAIT)
|
|
83
|
-
.click(Selector('.q-menu .q-item').nth(role))
|
|
84
|
-
.wait(Members.SHORT_WAIT)
|
|
85
|
-
.click(Selector('.q-dialog #join-button'))
|
|
86
|
-
.wait(2000)
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
async leaveGroup (test, memberName, groupName) {
|
|
90
|
-
await test
|
|
91
|
-
.click(this.collection.withText(memberName).find('#group-button'))
|
|
92
|
-
.wait(Members.SHORT_WAIT)
|
|
93
|
-
.click(Selector('.q-menu').find('#leave-group'))
|
|
94
|
-
.wait(Members.SHORT_WAIT)
|
|
95
|
-
.click(Selector('.q-dialog .q-card button[type=button]').nth(1))
|
|
96
|
-
.wait(2000)
|
|
97
|
-
}
|
|
98
|
-
}
|