diff --git a/quasar.conf.js b/quasar.conf.js index bd63dfed..3c47bc10 100644 --- a/quasar.conf.js +++ b/quasar.conf.js @@ -29,7 +29,8 @@ module.exports = function (/* ctx */) { 'components', 'vue-scrollto', 'constants', - 'vue-wait' + 'vue-wait', + 'e2e-testing' ], // https://quasar.dev/quasar-cli/quasar-conf-js#Property%3A-css diff --git a/src/boot/e2e-testing.js b/src/boot/e2e-testing.js new file mode 100644 index 00000000..34904387 --- /dev/null +++ b/src/boot/e2e-testing.js @@ -0,0 +1,20 @@ + +import _ from 'lodash' + +export default ({ app, Vue }) => { + Vue.mixin({ + mounted () { + if (this.$vnode && this.$el && this.$el.setAttribute) { + let dataCy = _.get(this.$vnode, 'componentOptions.Ctor.extendOptions.name', null) + if (dataCy !== null && this.$vnode.key) { + dataCy += '--' + this.$vnode.key + } + if (dataCy !== null) { + this.$el.setAttribute('data-cy', _.kebabCase(dataCy)) + } else if (process.env.DEV) { + console.warn('data-cy generation failed due to missing component name', this.$el) + } + } + } + }) +}