diff --git a/.drone.yml b/.drone.yml
index 8a7c18c0..4090e6a8 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 f2a7edc4..ce7f6f55 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 12a3b27e..2ede493f 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 048455bc..62343c91 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 2b267cd5..4af5981a 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 2019a5e4..440fcf3f 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 06a81850..5ab3635f 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 1ecacb3e..bff6f8bb 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 20b6ae13..db656b85 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 48f6a3e8..3136b09b 100644
--- a/src/components/home/contentAuth.vue
+++ b/src/components/home/contentAuth.vue
@@ -9,7 +9,7 @@
class="app-container"
>