diff --git a/.drone.yml b/.drone.yml index 8a7c18c02..4090e6a8f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -98,6 +98,15 @@ steps: depends_on: - dependencies + - name: typecheck + failure: ignore + image: node:16 + pull: true + commands: + - yarn typecheck + depends_on: + - dependencies + - name: test-frontend image: cypress/browsers:node16.5.0-chrome94-ff93 pull: true diff --git a/cypress/integration/list/list.spec.js b/cypress/integration/list/list.spec.js index f2a7edc40..ce7f6f551 100644 --- a/cypress/integration/list/list.spec.js +++ b/cypress/integration/list/list.spec.js @@ -17,7 +17,7 @@ describe('Lists', () => { cy.url() .should('contain', '/lists/new/1') cy.get('.card-header-title') - .contains('Create a new list') + .contains('New list') cy.get('input.input') .type('New List') cy.get('.button') diff --git a/cypress/integration/list/namespaces.spec.js b/cypress/integration/list/namespaces.spec.js index 12a3b27ef..2ede493f5 100644 --- a/cypress/integration/list/namespaces.spec.js +++ b/cypress/integration/list/namespaces.spec.js @@ -15,7 +15,7 @@ describe('Namepaces', () => { it('Should be all there', () => { cy.visit('/namespaces') - cy.get('.namespace h1 span') + cy.get('[data-cy="namespace-title"]') .should('contain', namespaces[0].title) }) @@ -23,14 +23,14 @@ describe('Namepaces', () => { const newNamespaceTitle = 'New Namespace' cy.visit('/namespaces') - cy.get('a.button') - .contains('Create a new namespace') + cy.get('[data-cy="new-namespace"]') + .should('contain', 'New namespace') .click() cy.url() .should('contain', '/namespaces/new') cy.get('.card-header-title') - .should('contain', 'Create a new namespace') + .should('contain', 'New namespace') cy.get('input.input') .type(newNamespaceTitle) cy.get('.button') @@ -72,7 +72,7 @@ describe('Namepaces', () => { cy.get('.namespace-container .menu.namespaces-lists') .should('contain', newNamespaceName) .should('not.contain', newNamespaces[0].title) - cy.get('.content.namespaces-list') + cy.get('[data-cy="namespaces-list"]') .should('contain', newNamespaceName) .should('not.contain', newNamespaces[0].title) }) @@ -116,30 +116,30 @@ describe('Namepaces', () => { // Initial cy.visit('/namespaces') - cy.get('.namespaces-list .namespace') + cy.get('.namespace') .should('not.contain', 'Archived') // Show archived - cy.get('.namespaces-list .fancycheckbox.show-archived-check label.check span') + cy.get('[data-cy="show-archived-check"] label.check span') .should('be.visible') .click() - cy.get('.namespaces-list .fancycheckbox.show-archived-check input') + cy.get('[data-cy="show-archived-check"] input') .should('be.checked') - cy.get('.namespaces-list .namespace') + cy.get('.namespace') .should('contain', 'Archived') // Don't show archived - cy.get('.namespaces-list .fancycheckbox.show-archived-check label.check span') + cy.get('[data-cy="show-archived-check"] label.check span') .should('be.visible') .click() - cy.get('.namespaces-list .fancycheckbox.show-archived-check input') + cy.get('[data-cy="show-archived-check"] input') .should('not.be.checked') // Second time visiting after unchecking cy.visit('/namespaces') - cy.get('.namespaces-list .fancycheckbox.show-archived-check input') + cy.get('[data-cy="show-archived-check"] input') .should('not.be.checked') - cy.get('.namespaces-list .namespace') + cy.get('.namespace') .should('not.contain', 'Archived') }) }) diff --git a/cypress/integration/task/task.spec.js b/cypress/integration/task/task.spec.js index 048455bcc..62343c91e 100644 --- a/cypress/integration/task/task.spec.js +++ b/cypress/integration/task/task.spec.js @@ -129,7 +129,7 @@ describe('Task', () => { cy.visit(`/tasks/${tasks[0].id}`) cy.get('.task-view .action-buttons .button') - .contains('Done!') + .contains('Mark task done!') .click() cy.get('.task-view .heading .is-done') diff --git a/package.json b/package.json index 2b267cd52..4af5981ab 100644 --- a/package.json +++ b/package.json @@ -9,10 +9,11 @@ "build": "vite build && workbox copyLibraries dist/", "build:modern-only": "BUILD_MODERN_ONLY=true vite build && workbox copyLibraries dist/", "build:dev": "vite build -m development --outDir dist-dev/", + "typecheck": "vue-tsc --noEmit", "lint": "eslint --ignore-pattern '*.test.*' ./src --ext .vue,.js,.ts", - "lint:markup": "vue-tsc --noEmit", "cypress:open": "cypress open", "test:unit": "vitest run", + "test:unit-watch": "vitest watch", "test:frontend": "cypress run", "browserslist:update": "npx browserslist@latest --update-db" }, @@ -21,32 +22,33 @@ "@kyvg/vue3-notification": "2.3.4", "@sentry/tracing": "6.16.1", "@sentry/vue": "6.16.1", - "@vue/compat": "3.2.26", - "@vueuse/core": "7.5.1", - "@vueuse/router": "7.5.1", + "@types/is-touch-device": "1.0.0", + "@vue/compat": "3.2.27", + "@vueuse/core": "7.5.2", + "@vueuse/router": "7.5.3", "bulma-css-variables": "0.9.33", "camel-case": "4.1.2", "codemirror": "5.65.0", "copy-to-clipboard": "3.3.1", "date-fns": "2.28.0", "dompurify": "2.3.4", - "easymde": "2.15.0", + "easymde": "2.16.1", "flatpickr": "4.6.9", "flexsearch": "0.7.21", - "highlight.js": "11.3.1", + "highlight.js": "11.4.0", "is-touch-device": "1.0.1", "lodash.clonedeep": "4.5.0", "lodash.debounce": "4.0.8", - "marked": "4.0.8", + "marked": "4.0.10", "register-service-worker": "1.7.2", "snake-case": "3.0.4", "ufo": "0.7.9", - "v-tooltip": "4.0.0-beta.6", - "vue": "3.2.26", - "vue-advanced-cropper": "2.7.0", + "v-tooltip": "4.0.0-beta.17", + "vue": "3.2.27", + "vue-advanced-cropper": "2.7.1", "vue-drag-resize": "2.0.3", "vue-flatpickr-component": "9.0.5", - "vue-i18n": "9.2.0-beta.26", + "vue-i18n": "9.2.0-beta.28", "vue-router": "4.0.12", "vuedraggable": "4.1.0", "vuex": "4.0.2", @@ -59,36 +61,36 @@ "@fortawesome/free-solid-svg-icons": "5.15.4", "@fortawesome/vue-fontawesome": "3.0.0-5", "@types/flexsearch": "0.7.2", - "@typescript-eslint/eslint-plugin": "5.9.0", - "@typescript-eslint/parser": "5.9.0", + "@typescript-eslint/eslint-plugin": "5.10.0", + "@typescript-eslint/parser": "5.10.0", "@vitejs/plugin-legacy": "1.6.4", "@vitejs/plugin-vue": "2.0.1", "@vue/eslint-config-typescript": "10.0.0", - "autoprefixer": "10.4.1", - "axios": "0.24.0", + "autoprefixer": "10.4.2", + "axios": "0.25.0", "browserslist": "4.19.1", - "caniuse-lite": "1.0.30001296", - "cypress": "9.2.0", + "caniuse-lite": "1.0.30001300", + "cypress": "9.2.1", "cypress-file-upload": "5.0.8", - "esbuild": "0.14.10", - "eslint": "8.6.0", - "eslint-plugin-vue": "8.2.0", + "esbuild": "0.14.11", + "eslint": "8.7.0", + "eslint-plugin-vue": "8.3.0", "express": "4.17.2", "faker": "5.5.3", - "netlify-cli": "8.6.4", - "happy-dom": "2.25.1", + "netlify-cli": "8.8.2", + "happy-dom": "2.27.0", "postcss": "8.4.5", - "postcss-preset-env": "7.2.0", - "rollup": "2.63.0", - "rollup-plugin-visualizer": "5.5.2", - "sass": "1.45.2", + "postcss-preset-env": "7.2.3", + "rollup": "2.64.0", + "rollup-plugin-visualizer": "5.5.4", + "sass": "1.48.0", "slugify": "1.6.5", "typescript": "4.5.4", - "vite": "2.7.10", - "vite-plugin-pwa": "0.11.12", - "vite-svg-loader": "3.1.1", - "vitest": "0.0.131", - "vue-tsc": "0.30.2", + "vite": "2.7.12", + "vite-plugin-pwa": "0.11.13", + "vite-svg-loader": "3.1.2", + "vitest": "0.1.20", + "vue-tsc": "0.30.5", "wait-on": "6.0.0", "workbox-cli": "6.4.2" }, diff --git a/renovate.json b/renovate.json index 2019a5e48..440fcf3fd 100644 --- a/renovate.json +++ b/renovate.json @@ -3,5 +3,11 @@ "labels": ["dependencies"], "extends": [ "config:base" + ], + "packageRules": [ + { + "matchPackageNames": ["netlify-cli"], + "extends": ["schedule:weekly"] + } ] } diff --git a/src/App.vue b/src/App.vue index 06a818506..5ab3635fd 100644 --- a/src/App.vue +++ b/src/App.vue @@ -42,7 +42,7 @@ import {useBodyClass} from '@/composables/useBodyClass' const store = useStore() const router = useRouter() -useBodyClass('is-touch', isTouchDevice) +useBodyClass('is-touch', isTouchDevice()) const keyboardShortcutsActive = computed(() => store.state.keyboardShortcutsActive) const authUser = computed(() => store.getters['auth/authUser']) diff --git a/src/assets/logo-full-pride.svg b/src/assets/logo-full-pride.svg index 1ecacb3e9..bff6f8bba 100644 --- a/src/assets/logo-full-pride.svg +++ b/src/assets/logo-full-pride.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/assets/logo-full.svg b/src/assets/logo-full.svg index 20b6ae130..db656b85e 100644 --- a/src/assets/logo-full.svg +++ b/src/assets/logo-full.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/components/home/contentAuth.vue b/src/components/home/contentAuth.vue index 48f6a3e84..3136b09b6 100644 --- a/src/components/home/contentAuth.vue +++ b/src/components/home/contentAuth.vue @@ -9,7 +9,7 @@ class="app-container" > -
-
+ diff --git a/src/components/home/contentLinkShare.vue b/src/components/home/contentLinkShare.vue index 1ae53c151..97648a09d 100644 --- a/src/components/home/contentLinkShare.vue +++ b/src/components/home/contentLinkShare.vue @@ -1,6 +1,6 @@