refactor(tests): Upgrade to cypress 10
This commit is contained in:
@@ -0,0 +1,13 @@
|
|||||||
|
import { defineConfig } from 'cypress'
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
video: false,
|
||||||
|
screenshotOnRunFailure: false,
|
||||||
|
retries: 2,
|
||||||
|
component: {
|
||||||
|
devServer: {
|
||||||
|
framework: 'vue',
|
||||||
|
bundler: 'vite',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"testFiles": "cypress/**/*.spec.ts",
|
|
||||||
"componentFolder": ".",
|
|
||||||
"video": false,
|
|
||||||
"screenshotOnRunFailure": false,
|
|
||||||
"retries": 2
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,95 @@
|
|||||||
|
import { isEdge, isNode, useVueFlow } from '@braks/vue-flow'
|
||||||
|
import { getElements } from '../../utils'
|
||||||
|
|
||||||
|
const { nodes, edges } = getElements()
|
||||||
|
|
||||||
|
describe('test store action setElements', () => {
|
||||||
|
const store = useVueFlow()
|
||||||
|
|
||||||
|
it('sets elements', () => {
|
||||||
|
store.setElements([...nodes, ...edges])
|
||||||
|
|
||||||
|
expect(store.nodes.value).to.have.length(nodes.length)
|
||||||
|
expect(store.edges.value).to.have.length(edges.length)
|
||||||
|
})
|
||||||
|
|
||||||
|
context('elements pre-set', () => {
|
||||||
|
it('parses elements to flow-elements', () => {
|
||||||
|
store.getEdges.value.forEach((edge) => expect(isEdge(edge)).to.be.true)
|
||||||
|
store.getNodes.value.forEach((node) => expect(isNode(node)).to.be.true)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('has correct element ids', () => {
|
||||||
|
const nodeIds = nodes.map((node) => node.id)
|
||||||
|
const edgeIds = edges.map((edge) => edge.id)
|
||||||
|
|
||||||
|
store.nodes.value.forEach((el) => expect(nodeIds).to.include(el.id))
|
||||||
|
store.edges.value.forEach((el) => expect(edgeIds).to.include(el.id))
|
||||||
|
})
|
||||||
|
|
||||||
|
it('has correct element types', () => {
|
||||||
|
const nodeTypes = nodes.map((node) => node.type)
|
||||||
|
store.nodes.value.forEach((el) => expect(nodeTypes).to.include(el.type))
|
||||||
|
const edgeTypes = edges.map((edge) => edge.type)
|
||||||
|
store.edges.value.forEach((el) => expect(edgeTypes).to.include(el.type))
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('test node properties', () => {
|
||||||
|
it('has correct label', () => {
|
||||||
|
store.getNodes.value.forEach((el) => {
|
||||||
|
const node = nodes.find((node) => node.id === el.id)
|
||||||
|
expect(el.label).to.eq(node?.label)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it('has correct position', () => {
|
||||||
|
store.getNodes.value.forEach((el) => {
|
||||||
|
const node = nodes.find((node) => node.id === el.id)
|
||||||
|
expect(JSON.stringify(el.position)).to.eq(JSON.stringify(node?.position || {}))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it('has correct random data', () => {
|
||||||
|
store.getNodes.value.forEach((el) => {
|
||||||
|
const node = nodes.find((node) => node.id === el.id)
|
||||||
|
expect(el.data.randomData).to.eq(node?.data.randomData)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
describe('test edge properties', () => {
|
||||||
|
it('has correct target and source', () => {
|
||||||
|
store.getEdges.value.forEach((el) => {
|
||||||
|
const edge = edges.find((edge) => edge.id === el.id)
|
||||||
|
|
||||||
|
expect(el.source).to.eq(edge?.source)
|
||||||
|
expect(el.target).to.eq(edge?.target)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it('has correct target-node and source-node', () => {
|
||||||
|
store.getEdges.value.forEach((el) => {
|
||||||
|
const edge = edges.find((edge) => edge.id === el.id)
|
||||||
|
|
||||||
|
expect(el.sourceNode.id).to.eq(edge?.source)
|
||||||
|
expect(el.targetNode.id).to.eq(edge?.target)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it('has correct random data', () => {
|
||||||
|
store.getEdges.value.forEach((el) => {
|
||||||
|
const edge = nodes.find((edge) => edge.id === el.id)
|
||||||
|
expect(el.data.randomData).to.eq(edge?.data.randomData)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it('is animated', () => {
|
||||||
|
store.getEdges.value.forEach((el) => {
|
||||||
|
const edge = edges.find((edge) => edge.id === el.id)
|
||||||
|
|
||||||
|
expect(el.animated).to.eq(edge?.animated)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
import { VueFlow } from '@braks/vue-flow'
|
||||||
|
import { getElements } from '../../utils'
|
||||||
|
|
||||||
|
const { nodes, edges } = getElements()
|
||||||
|
|
||||||
|
describe('render Vue Flow', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.mount(VueFlow, {
|
||||||
|
props: {
|
||||||
|
modelValue: [...nodes, ...edges],
|
||||||
|
},
|
||||||
|
attrs: {
|
||||||
|
key: 'flowy',
|
||||||
|
style: {
|
||||||
|
height: '100vh',
|
||||||
|
width: '100vw',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it('renders a Vue Flow container', () => {
|
||||||
|
cy.get('.vue-flow').should('exist')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('renders nodes', () => {
|
||||||
|
cy.get('.vue-flow__node').should('have.length', nodes.length)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('renders edges', () => cy.get('.vue-flow__edge').should('have.length', edges.length))
|
||||||
|
|
||||||
|
it('renders correct node labels', () =>
|
||||||
|
cy.get('.vue-flow__node').each((node) => expect(nodes.some((el) => el.label === node.text())).to.be.true))
|
||||||
|
|
||||||
|
it('renders nodes at correct position', () =>
|
||||||
|
cy
|
||||||
|
.get('.vue-flow__node')
|
||||||
|
.each(
|
||||||
|
(node) =>
|
||||||
|
expect(nodes.some((el) => el.position.x === node.position().left && el.position.y === node.position().top)).to.be.true,
|
||||||
|
))
|
||||||
|
})
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
import type { Edge, Node, SetState, VueFlowStore } from '@braks/vue-flow'
|
|
||||||
import { isEdge, isNode, useVueFlow } from '@braks/vue-flow'
|
|
||||||
import { getElements } from '../../../../examples/vite/src/Stress/utils'
|
|
||||||
|
|
||||||
describe('test store action setElements', () => {
|
|
||||||
const setElements = async (setState: SetState) => {
|
|
||||||
const nodes: Node[] = [
|
|
||||||
{ id: '1', type: 'input', data: { label: 'Node 1' }, position: { x: 250, y: 5 } },
|
|
||||||
{ id: '2', data: { label: 'Node 2' }, position: { x: 100, y: 100 } },
|
|
||||||
]
|
|
||||||
const edges: Edge[] = [{ id: 'e1-2', source: '1', target: '2', animated: true }]
|
|
||||||
setState({
|
|
||||||
nodes,
|
|
||||||
edges,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
it('sets elements', async () => {
|
|
||||||
const { setState, nodes, edges } = useVueFlow()
|
|
||||||
await setElements(setState)
|
|
||||||
expect(nodes.value).to.have.length(2)
|
|
||||||
expect(edges.value).to.have.length(1)
|
|
||||||
})
|
|
||||||
|
|
||||||
context('elements pre-set', () => {
|
|
||||||
let store: VueFlowStore
|
|
||||||
beforeEach(async () => {
|
|
||||||
store = useVueFlow()
|
|
||||||
await setElements(store.setState)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('parses elements to flow-elements', () => {
|
|
||||||
store.getEdges.value.forEach((edge) => expect(isEdge(edge)).to.be.true)
|
|
||||||
store.getNodes.value.forEach((node) => expect(isNode(node)).to.be.true)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('parses elements to flow-elements (199 elements - stress test)', async () => {
|
|
||||||
const { nodes, edges } = getElements()
|
|
||||||
store.setState({
|
|
||||||
nodes,
|
|
||||||
edges,
|
|
||||||
})
|
|
||||||
store.getEdges.value.forEach((edge) => expect(isEdge(edge)).to.be.true)
|
|
||||||
store.getNodes.value.forEach((node) => expect(isNode(node)).to.be.true)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('has correct element ids', () => {
|
|
||||||
store.nodes.value.forEach((el) => expect(['1', '2']).to.include(el.id))
|
|
||||||
store.edges.value.forEach((el) => expect(['e1-2']).to.include(el.id))
|
|
||||||
})
|
|
||||||
|
|
||||||
it('has correct element types', () => {
|
|
||||||
store.nodes.value.forEach((el) => expect(['input', 'default']).to.include(el.type))
|
|
||||||
})
|
|
||||||
|
|
||||||
it('nodes have correct label', () => {
|
|
||||||
store.getNodes.value.forEach((el) => {
|
|
||||||
if (el.id === '1') expect(el.data.label).to.eq('Node 1')
|
|
||||||
else expect(el.data.label).to.eq('Node 2')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it('nodes have correct position', () => {
|
|
||||||
store.getNodes.value.forEach((el) => {
|
|
||||||
if (el.id === '1') expect(JSON.stringify(el.position)).to.eq(JSON.stringify({ x: 250, y: 5 }))
|
|
||||||
else expect(JSON.stringify(el.position)).to.eq(JSON.stringify({ x: 100, y: 100 }))
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it('edge has correct target and source', () => {
|
|
||||||
store.getEdges.value.forEach((el) => {
|
|
||||||
expect(el.source).to.eq('1')
|
|
||||||
expect(el.target).to.eq('2')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it('edge has correct targetnode and sourceNode', () => {
|
|
||||||
store.getEdges.value.forEach((el) => {
|
|
||||||
expect(el.sourceNode.id).to.eq('1')
|
|
||||||
expect(el.targetNode.id).to.eq('2')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it('edge is animated', () => {
|
|
||||||
store.getEdges.value.forEach((el) => expect(el.animated).to.eq(true))
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
import { mount } from '@cypress/vue'
|
|
||||||
import type { Elements } from '@braks/vue-flow'
|
|
||||||
import { VueFlow, isEdge, isNode } from '@braks/vue-flow'
|
|
||||||
import '@braks/vue-flow/dist/style.css'
|
|
||||||
import '@braks/vue-flow/dist/theme-default.css'
|
|
||||||
|
|
||||||
describe('Render VueFlow', () => {
|
|
||||||
const elements: Elements = [
|
|
||||||
{ id: '1', type: 'input', label: 'Node 1', position: { x: 250, y: 5 } },
|
|
||||||
{ id: '2', label: 'Node 2', position: { x: 100, y: 100 } },
|
|
||||||
{ id: 'e1-2', source: '1', target: '2', animated: true },
|
|
||||||
]
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
mount(VueFlow, {
|
|
||||||
props: {
|
|
||||||
modelValue: elements,
|
|
||||||
},
|
|
||||||
attrs: {
|
|
||||||
key: 'flowy',
|
|
||||||
style: {
|
|
||||||
height: '100vh',
|
|
||||||
width: '100vw',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
it('renders a Vue Flow container', () => {
|
|
||||||
cy.get('.vue-flow').should('exist')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('renders nodes', () => {
|
|
||||||
cy.get('.vue-flow__node').should('have.length', elements.filter(isNode).length)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('renders edges', () => cy.get('.vue-flow__edge').should('have.length', elements.filter(isEdge).length))
|
|
||||||
|
|
||||||
it('renders correct node labels', () =>
|
|
||||||
cy.get('.vue-flow__node').each((node) => expect(elements.some((el) => el.label === node.text())).to.be.true))
|
|
||||||
|
|
||||||
it('renders nodes at correct position', () =>
|
|
||||||
cy
|
|
||||||
.get('.vue-flow__node')
|
|
||||||
.each(
|
|
||||||
(node) =>
|
|
||||||
expect(
|
|
||||||
elements.filter(isNode).some((el) => el.position.x === node.position().left && el.position.y === node.position().top),
|
|
||||||
).to.be.true,
|
|
||||||
))
|
|
||||||
})
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
import { resolve } from 'path'
|
|
||||||
import { startDevServer } from '@cypress/vite-dev-server'
|
|
||||||
|
|
||||||
export default ((on, config) => {
|
|
||||||
on('dev-server:start', async (options) =>
|
|
||||||
startDevServer({
|
|
||||||
options,
|
|
||||||
viteConfig: {
|
|
||||||
mode: 'test',
|
|
||||||
configFile: resolve(__dirname, 'vite.config.ts'),
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
|
|
||||||
return config
|
|
||||||
}) as Cypress.PluginConfig
|
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
/// <reference types="cypress" />
|
||||||
|
// ***********************************************
|
||||||
|
// This example commands.ts shows you how to
|
||||||
|
// create various custom commands and overwrite
|
||||||
|
// existing commands.
|
||||||
|
//
|
||||||
|
// For more comprehensive examples of custom
|
||||||
|
// commands please read more here:
|
||||||
|
// https://on.cypress.io/custom-commands
|
||||||
|
// ***********************************************
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// -- This is a parent command --
|
||||||
|
// Cypress.Commands.add('login', (email, password) => { ... })
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// -- This is a child command --
|
||||||
|
// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... })
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// -- This is a dual command --
|
||||||
|
// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... })
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// -- This will overwrite an existing command --
|
||||||
|
// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... })
|
||||||
|
//
|
||||||
|
// declare global {
|
||||||
|
// namespace Cypress {
|
||||||
|
// interface Chainable {
|
||||||
|
// login(email: string, password: string): Chainable<void>
|
||||||
|
// drag(subject: string, options?: Partial<TypeOptions>): Chainable<Element>
|
||||||
|
// dismiss(subject: string, options?: Partial<TypeOptions>): Chainable<Element>
|
||||||
|
// visit(originalFn: CommandOriginalFn, url: string, options: Partial<VisitOptions>): Chainable<Element>
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
|
<title>Components App</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div data-cy-root></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
// ***********************************************************
|
||||||
|
// This example support/component.ts is processed and
|
||||||
|
// loaded automatically before your test files.
|
||||||
|
//
|
||||||
|
// This is a great place to put global configuration and
|
||||||
|
// behavior that modifies Cypress.
|
||||||
|
//
|
||||||
|
// You can change the location of this file or turn off
|
||||||
|
// automatically serving support files with the
|
||||||
|
// 'supportFile' configuration option.
|
||||||
|
//
|
||||||
|
// You can read more here:
|
||||||
|
// https://on.cypress.io/configuration
|
||||||
|
// ***********************************************************
|
||||||
|
|
||||||
|
// Import necessary styles
|
||||||
|
import '@braks/vue-flow/dist/style.css'
|
||||||
|
import '@braks/vue-flow/dist/theme-default.css'
|
||||||
|
|
||||||
|
// Import commands.js using ES2015 syntax:
|
||||||
|
import './commands'
|
||||||
|
|
||||||
|
// Alternatively you can use CommonJS syntax:
|
||||||
|
// require('./commands')
|
||||||
|
|
||||||
|
import { mount } from 'cypress/vue'
|
||||||
|
|
||||||
|
// Augment the Cypress namespace to include type definitions for
|
||||||
|
// your custom command.
|
||||||
|
// Alternatively, can be defined in cypress/support/component.d.ts
|
||||||
|
// with a <reference path="./component" /> at the top of your spec.
|
||||||
|
declare global {
|
||||||
|
namespace Cypress {
|
||||||
|
interface Chainable {
|
||||||
|
mount: typeof mount
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Cypress.Commands.add('mount', mount)
|
||||||
|
|
||||||
|
// Example use:
|
||||||
|
// cy.mount(MyComponent)
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
// ***********************************************************
|
|
||||||
// This example support/index.js is processed and
|
|
||||||
// loaded automatically before your test files.
|
|
||||||
//
|
|
||||||
// This is a great place to put global configuration and
|
|
||||||
// behavior that modifies Cypress.
|
|
||||||
//
|
|
||||||
// You can change the location of this file or turn off
|
|
||||||
// automatically serving support files with the
|
|
||||||
// 'supportFile' configuration option.
|
|
||||||
//
|
|
||||||
// You can read more here:
|
|
||||||
// https://on.cypress.io/configuration
|
|
||||||
// ***********************************************************
|
|
||||||
|
|
||||||
// Import commands.js using ES2015 syntax:
|
|
||||||
|
|
||||||
// Alternatively you can use CommonJS syntax:
|
|
||||||
// require('./commands')
|
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
import type { Edge, Node } from '@braks/vue-flow'
|
||||||
|
|
||||||
|
export function getElements(xElements = 10, yElements = 10) {
|
||||||
|
const initialNodes: Node[] = []
|
||||||
|
const initialEdges: Edge[] = []
|
||||||
|
let nodeId = 1
|
||||||
|
let recentNodeId = null
|
||||||
|
|
||||||
|
for (let y = 0; y < yElements; y++) {
|
||||||
|
for (let x = 0; x < xElements; x++) {
|
||||||
|
const position = { x: x * 100, y: y * 50 }
|
||||||
|
const node = {
|
||||||
|
id: nodeId.toString(),
|
||||||
|
style: { width: 50, fontSize: 11 },
|
||||||
|
label: `Node ${nodeId}`,
|
||||||
|
type: '',
|
||||||
|
position,
|
||||||
|
data: {
|
||||||
|
randomData: Math.floor(Math.random() * 1e3),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
initialNodes.push(node)
|
||||||
|
|
||||||
|
if (recentNodeId && nodeId <= xElements * yElements) {
|
||||||
|
initialEdges.push({
|
||||||
|
id: `${x}-${y}`,
|
||||||
|
source: recentNodeId.toString(),
|
||||||
|
target: nodeId.toString(),
|
||||||
|
data: {
|
||||||
|
randomData: Math.floor(Math.random() * 1e3),
|
||||||
|
},
|
||||||
|
animated: Math.random() > 0.5,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
recentNodeId = nodeId
|
||||||
|
nodeId++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
nodes: initialNodes,
|
||||||
|
edges: initialEdges,
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
export * from './elements'
|
||||||
+1
-4
@@ -10,9 +10,6 @@
|
|||||||
"@braks/vue-flow": "workspace:*"
|
"@braks/vue-flow": "workspace:*"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@cypress/vite-dev-server": "^2.2.3",
|
"cypress": "^10.9.0"
|
||||||
"@cypress/vue": "^3.1.2",
|
|
||||||
"@vitejs/plugin-vue": "^2.3.3",
|
|
||||||
"cypress": "8.5.0"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-4
@@ -3,7 +3,10 @@
|
|||||||
"baseUrl": ".",
|
"baseUrl": ".",
|
||||||
"module": "ESNext",
|
"module": "ESNext",
|
||||||
"target": "es2017",
|
"target": "es2017",
|
||||||
"lib": ["DOM", "ESNext"],
|
"lib": [
|
||||||
|
"DOM",
|
||||||
|
"ESNext"
|
||||||
|
],
|
||||||
"noEmit": true,
|
"noEmit": true,
|
||||||
"declaration": false,
|
"declaration": false,
|
||||||
"strict": true,
|
"strict": true,
|
||||||
@@ -15,8 +18,8 @@
|
|||||||
"noUnusedLocals": false,
|
"noUnusedLocals": false,
|
||||||
"strictNullChecks": true,
|
"strictNullChecks": true,
|
||||||
"forceConsistentCasingInFileNames": true,
|
"forceConsistentCasingInFileNames": true,
|
||||||
"types": ["vite/client"]
|
"types": [
|
||||||
|
"vite/client"
|
||||||
|
],
|
||||||
},
|
},
|
||||||
"include": ["cypress"],
|
|
||||||
"exclude": ["node_modules"]
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import { defineConfig } from 'vite'
|
import { defineConfig } from 'vite'
|
||||||
import vue from '@vitejs/plugin-vue'
|
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
plugins: [vue()],
|
base: '.',
|
||||||
})
|
})
|
||||||
Generated
+13
-100
@@ -76,17 +76,11 @@ importers:
|
|||||||
e2e:
|
e2e:
|
||||||
specifiers:
|
specifiers:
|
||||||
'@braks/vue-flow': workspace:*
|
'@braks/vue-flow': workspace:*
|
||||||
'@cypress/vite-dev-server': ^2.2.3
|
cypress: ^10.9.0
|
||||||
'@cypress/vue': ^3.1.2
|
|
||||||
'@vitejs/plugin-vue': ^2.3.3
|
|
||||||
cypress: 8.5.0
|
|
||||||
dependencies:
|
dependencies:
|
||||||
'@braks/vue-flow': link:../packages/vue-flow
|
'@braks/vue-flow': link:../packages/vue-flow
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@cypress/vite-dev-server': 2.2.3_vite@2.9.15
|
cypress: 10.9.0
|
||||||
'@cypress/vue': 3.1.2_cypress@8.5.0+vue@3.2.37
|
|
||||||
'@vitejs/plugin-vue': 2.3.3_vite@2.9.15+vue@3.2.37
|
|
||||||
cypress: 8.5.0
|
|
||||||
|
|
||||||
examples/nuxt3:
|
examples/nuxt3:
|
||||||
specifiers:
|
specifiers:
|
||||||
@@ -812,10 +806,6 @@ packages:
|
|||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@cypress/mount-utils/1.0.2:
|
|
||||||
resolution: {integrity: sha512-Fn3fdTiyayHoy8Ol0RSu4MlBH2maQ2ZEXeEVKl/zHHXEQpld5HX3vdNLhK5YLij8cLynA4DxOT/nO9iEnIiOXw==}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@cypress/request/2.88.10:
|
/@cypress/request/2.88.10:
|
||||||
resolution: {integrity: sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==}
|
resolution: {integrity: sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==}
|
||||||
engines: {node: '>= 6'}
|
engines: {node: '>= 6'}
|
||||||
@@ -840,38 +830,6 @@ packages:
|
|||||||
uuid: 8.3.2
|
uuid: 8.3.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@cypress/vite-dev-server/2.2.3_vite@2.9.15:
|
|
||||||
resolution: {integrity: sha512-E9cPKwReweYGRsupfR6Va1R1bHv3zPb3gHG68fyQwAjG4oPORaQlgfFWiR2i1pF+tRftvNfM0O2PBuKX3IvPxg==}
|
|
||||||
peerDependencies:
|
|
||||||
vite: '>= 2.1.3'
|
|
||||||
dependencies:
|
|
||||||
debug: 4.3.4
|
|
||||||
get-port: 5.1.1
|
|
||||||
vite: 2.9.15
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- supports-color
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@cypress/vue/3.1.2_cypress@8.5.0+vue@3.2.37:
|
|
||||||
resolution: {integrity: sha512-CqIBupPW6EhXJ7lXE64MBKh3VfdShHnuC3HBV/euHBt9tsgSo7RZHBTZUsKc8aM745VzVnuNiax+JV4CplrtLQ==}
|
|
||||||
engines: {node: '>=8'}
|
|
||||||
peerDependencies:
|
|
||||||
'@cypress/webpack-dev-server': '*'
|
|
||||||
babel-loader: '*'
|
|
||||||
cypress: '>=7.0.0'
|
|
||||||
vue: '>=3.0.0'
|
|
||||||
peerDependenciesMeta:
|
|
||||||
'@cypress/webpack-dev-server':
|
|
||||||
optional: true
|
|
||||||
babel-loader:
|
|
||||||
optional: true
|
|
||||||
dependencies:
|
|
||||||
'@cypress/mount-utils': 1.0.2
|
|
||||||
'@vue/test-utils': 2.0.2_vue@3.2.37
|
|
||||||
cypress: 8.5.0
|
|
||||||
vue: 3.2.37
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@cypress/xvfb/1.2.4_supports-color@8.1.1:
|
/@cypress/xvfb/1.2.4_supports-color@8.1.1:
|
||||||
resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==}
|
resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -2000,8 +1958,8 @@ packages:
|
|||||||
'@types/node': 12.20.55
|
'@types/node': 12.20.55
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@types/sinonjs__fake-timers/6.0.4:
|
/@types/sinonjs__fake-timers/8.1.1:
|
||||||
resolution: {integrity: sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A==}
|
resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@types/sizzle/2.3.3:
|
/@types/sizzle/2.3.3:
|
||||||
@@ -2026,7 +1984,7 @@ packages:
|
|||||||
resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==}
|
resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==}
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 14.18.22
|
'@types/node': 18.7.8
|
||||||
dev: true
|
dev: true
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
@@ -2222,17 +2180,6 @@ packages:
|
|||||||
vue: 3.2.37
|
vue: 3.2.37
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vitejs/plugin-vue/2.3.3_vite@2.9.15+vue@3.2.37:
|
|
||||||
resolution: {integrity: sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==}
|
|
||||||
engines: {node: '>=12.0.0'}
|
|
||||||
peerDependencies:
|
|
||||||
vite: ^2.5.10
|
|
||||||
vue: ^3.2.25
|
|
||||||
dependencies:
|
|
||||||
vite: 2.9.15
|
|
||||||
vue: 3.2.37
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@vitejs/plugin-vue/2.3.4_vite@2.9.15+vue@3.2.37:
|
/@vitejs/plugin-vue/2.3.4_vite@2.9.15+vue@3.2.37:
|
||||||
resolution: {integrity: sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg==}
|
resolution: {integrity: sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg==}
|
||||||
engines: {node: '>=12.0.0'}
|
engines: {node: '>=12.0.0'}
|
||||||
@@ -2519,14 +2466,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-0PLQ6RUtZM0vO3teRfzGi4ltLUO5aO+kLgwh4Um3THSR03rpQWLTuRCkuO5A41ITzwdWeKdPHtSARuPkoo5pCQ==}
|
resolution: {integrity: sha512-0PLQ6RUtZM0vO3teRfzGi4ltLUO5aO+kLgwh4Um3THSR03rpQWLTuRCkuO5A41ITzwdWeKdPHtSARuPkoo5pCQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vue/test-utils/2.0.2_vue@3.2.37:
|
|
||||||
resolution: {integrity: sha512-E2P4oXSaWDqTZNbmKZFVLrNN/siVN78YkEqs7pHryWerrlZR9bBFLWdJwRoguX45Ru6HxIflzKl4vQvwRMwm5g==}
|
|
||||||
peerDependencies:
|
|
||||||
vue: ^3.0.1
|
|
||||||
dependencies:
|
|
||||||
vue: 3.2.37
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@vueuse/core/8.9.4_vue@3.2.37:
|
/@vueuse/core/8.9.4_vue@3.2.37:
|
||||||
resolution: {integrity: sha512-B/Mdj9TK1peFyWaPof+Zf/mP9XuGAngaJZBwPaXBvU3aCTZlx3ltlrFFFyMV4iGBwsjSCeUCgZrtkEj9dS2Y3Q==}
|
resolution: {integrity: sha512-B/Mdj9TK1peFyWaPof+Zf/mP9XuGAngaJZBwPaXBvU3aCTZlx3ltlrFFFyMV4iGBwsjSCeUCgZrtkEj9dS2Y3Q==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -3834,8 +3773,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==}
|
resolution: {integrity: sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/cypress/8.5.0:
|
/cypress/10.9.0:
|
||||||
resolution: {integrity: sha512-MMkXIS+Ro2KETn4gAlG3tIc/7FiljuuCZP0zpd9QsRG6MZSyZW/l1J3D4iQM6WHsVxuX4rFChn5jPFlC2tNSvQ==}
|
resolution: {integrity: sha512-MjIWrRpc+bQM9U4kSSdATZWZ2hUqHGFEQTF7dfeZRa4MnalMtc88FIE49USWP2ZVtfy5WPBcgfBX+YorFqGElA==}
|
||||||
engines: {node: '>=12.0.0'}
|
engines: {node: '>=12.0.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
requiresBuild: true
|
requiresBuild: true
|
||||||
@@ -3843,11 +3782,12 @@ packages:
|
|||||||
'@cypress/request': 2.88.10
|
'@cypress/request': 2.88.10
|
||||||
'@cypress/xvfb': 1.2.4_supports-color@8.1.1
|
'@cypress/xvfb': 1.2.4_supports-color@8.1.1
|
||||||
'@types/node': 14.18.22
|
'@types/node': 14.18.22
|
||||||
'@types/sinonjs__fake-timers': 6.0.4
|
'@types/sinonjs__fake-timers': 8.1.1
|
||||||
'@types/sizzle': 2.3.3
|
'@types/sizzle': 2.3.3
|
||||||
arch: 2.2.0
|
arch: 2.2.0
|
||||||
blob-util: 2.0.2
|
blob-util: 2.0.2
|
||||||
bluebird: 3.7.2
|
bluebird: 3.7.2
|
||||||
|
buffer: 5.7.1
|
||||||
cachedir: 2.3.0
|
cachedir: 2.3.0
|
||||||
chalk: 4.1.2
|
chalk: 4.1.2
|
||||||
check-more-types: 2.24.0
|
check-more-types: 2.24.0
|
||||||
@@ -3858,7 +3798,7 @@ packages:
|
|||||||
dayjs: 1.11.4
|
dayjs: 1.11.4
|
||||||
debug: 4.3.4_supports-color@8.1.1
|
debug: 4.3.4_supports-color@8.1.1
|
||||||
enquirer: 2.3.6
|
enquirer: 2.3.6
|
||||||
eventemitter2: 6.4.6
|
eventemitter2: 6.4.7
|
||||||
execa: 4.1.0
|
execa: 4.1.0
|
||||||
executable: 4.1.1
|
executable: 4.1.1
|
||||||
extract-zip: 2.0.1_supports-color@8.1.1
|
extract-zip: 2.0.1_supports-color@8.1.1
|
||||||
@@ -3875,12 +3815,11 @@ packages:
|
|||||||
ospath: 1.2.2
|
ospath: 1.2.2
|
||||||
pretty-bytes: 5.6.0
|
pretty-bytes: 5.6.0
|
||||||
proxy-from-env: 1.0.0
|
proxy-from-env: 1.0.0
|
||||||
ramda: 0.27.2
|
|
||||||
request-progress: 3.0.0
|
request-progress: 3.0.0
|
||||||
|
semver: 7.3.7
|
||||||
supports-color: 8.1.1
|
supports-color: 8.1.1
|
||||||
tmp: 0.2.1
|
tmp: 0.2.1
|
||||||
untildify: 4.0.0
|
untildify: 4.0.0
|
||||||
url: 0.11.0
|
|
||||||
yauzl: 2.10.0
|
yauzl: 2.10.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
@@ -5477,8 +5416,8 @@ packages:
|
|||||||
engines: {node: '>= 0.6'}
|
engines: {node: '>= 0.6'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/eventemitter2/6.4.6:
|
/eventemitter2/6.4.7:
|
||||||
resolution: {integrity: sha512-OHqo4wbHX5VbvlbB6o6eDwhYmiTjrpWACjF8Pmof/GTD6rdBNdZFNck3xlhqOiQFGCOoq3uzHvA0cQpFHIGVAQ==}
|
resolution: {integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/eventemitter3/4.0.7:
|
/eventemitter3/4.0.7:
|
||||||
@@ -5934,11 +5873,6 @@ packages:
|
|||||||
fs-memo: 1.2.0
|
fs-memo: 1.2.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/get-port/5.1.1:
|
|
||||||
resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==}
|
|
||||||
engines: {node: '>=8'}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/get-stdin/9.0.0:
|
/get-stdin/9.0.0:
|
||||||
resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==}
|
resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@@ -9005,10 +8939,6 @@ packages:
|
|||||||
once: 1.4.0
|
once: 1.4.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/punycode/1.3.2:
|
|
||||||
resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/punycode/2.1.1:
|
/punycode/2.1.1:
|
||||||
resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
|
resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
@@ -9054,12 +8984,6 @@ packages:
|
|||||||
strict-uri-encode: 2.0.0
|
strict-uri-encode: 2.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/querystring/0.2.0:
|
|
||||||
resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==}
|
|
||||||
engines: {node: '>=0.4.x'}
|
|
||||||
deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/queue-microtask/1.2.3:
|
/queue-microtask/1.2.3:
|
||||||
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
|
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
|
||||||
dev: true
|
dev: true
|
||||||
@@ -9073,10 +8997,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-Mpfd/OuX0zoJ6ojLD/RTOHvJPg6e6PjINtmYzV87kIXc5iUtDz34i7gg4SV4XjqRJTmSiYO/g9i/mKWGf4z8wg==}
|
resolution: {integrity: sha512-Mpfd/OuX0zoJ6ojLD/RTOHvJPg6e6PjINtmYzV87kIXc5iUtDz34i7gg4SV4XjqRJTmSiYO/g9i/mKWGf4z8wg==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/ramda/0.27.2:
|
|
||||||
resolution: {integrity: sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==}
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/randombytes/2.1.0:
|
/randombytes/2.1.0:
|
||||||
resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
|
resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -11192,13 +11112,6 @@ packages:
|
|||||||
prepend-http: 2.0.0
|
prepend-http: 2.0.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/url/0.11.0:
|
|
||||||
resolution: {integrity: sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==}
|
|
||||||
dependencies:
|
|
||||||
punycode: 1.3.2
|
|
||||||
querystring: 0.2.0
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/util-deprecate/1.0.2:
|
/util-deprecate/1.0.2:
|
||||||
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
|
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|||||||
Reference in New Issue
Block a user