### TL:DR By sharing initialization logic, accelerate test case execution. ### What Changed * Global setup for copilot e2e * Login * Create Workspace * Enable fully parallel for ci ### Optimization Comparison Comparing with PR [fix(core): ask AI input box in the whiteboard is blocked by the menu …](https://github.com/toeverything/AFFiNE/pull/11634): | | Shard 1 |2|3|4|5|6|7|8| | ------|----|----|----|----|----|---|---|--| |Before|15min|14min|14min|14min|14min|13min|15min|10min| |After|8min|11min|8min|8min|8min|8min|8min|7min| ### Trade-Off Since all copilot use cases currently share a single user and workspace, some test cases need to focus on **isolation** and **independence**. For example, when testing Embedding-related workflows: * Different document contents should be used to avoid interference. * After each test case execution, **cleanup** operations are also required. * Some tests should be configured to **serial** mode. ```ts test.describe.configure({ mode: 'serial' }); test.describe('AIChatWith/Collections', () => { test.beforeEach(async ({ loggedInPage: page, utils }) => { await utils.testUtils.setupTestEnvironment(page); await utils.chatPanel.openChatPanel(page); await utils.editor.clearAllCollections(page); await utils.testUtils.createNewPage(page); }); test.afterEach(async ({ loggedInPage: page, utils }) => { // clear all collections await utils.editor.clearAllCollections(page); }); test('should support chat with collection', async ({ loggedInPage: page, utils, }) => { // Create two collections await utils.editor.createCollectionAndDoc( page, 'Collection 1', 'CollectionAAaa is a cute dog' ); await utils.chatPanel.chatWithCollections(page, ['Collection 1']); await utils.chatPanel.makeChat(page, 'What is CollectionAAaa(Use English)'); // ... }); test('should support chat with multiple collections', async ({ loggedInPage: page, utils, }) => { // Create two collections await utils.editor.createCollectionAndDoc( page, 'Collection 2', 'CollectionEEee is a cute cat' ); await utils.editor.createCollectionAndDoc( page, 'Collection 3', 'CollectionFFff is a cute dog' ); await utils.chatPanel.chatWithCollections(page, [ 'Collection 2', 'Collection 3', ]); await utils.chatPanel.makeChat( page, 'What is CollectionEEee? What is CollectionFFff?(Use English)' ); // ... }); }); ``` > CLOSE AI-51
91 lines
1.1 KiB
Plaintext
91 lines
1.1 KiB
Plaintext
# See http://help.github.com/ignore-files/ for more about ignoring files.
|
|
.pnp.*
|
|
.yarn/*
|
|
!.yarn/patches
|
|
!.yarn/plugins
|
|
!.yarn/releases
|
|
!.yarn/sdks
|
|
.yarn/versions
|
|
|
|
# compiled output
|
|
*dist
|
|
/tmp
|
|
/out-tsc
|
|
.nyc_output
|
|
.coverage
|
|
.swc
|
|
|
|
# dependencies
|
|
node_modules
|
|
|
|
# IDEs and editors
|
|
**/.idea
|
|
.project
|
|
.classpath
|
|
.c9/
|
|
*.launch
|
|
.settings/
|
|
*.sublime-workspace
|
|
|
|
# IDE - VSCode
|
|
.vscode/*
|
|
!.vscode/settings.template.json
|
|
!.vscode/launch.template.json
|
|
!.vscode/extensions.json
|
|
|
|
# misc
|
|
/.sass-cache
|
|
/connect.lock
|
|
coverage
|
|
/libpeerconnection.log
|
|
npm-debug.log
|
|
yarn-error.log
|
|
testem.log
|
|
.pnpm-debug.log
|
|
/typings
|
|
tsconfig.tsbuildinfo
|
|
|
|
# System Files
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# env
|
|
*.env.local
|
|
*.local.env
|
|
.history
|
|
|
|
.next
|
|
.vercel
|
|
out/
|
|
storybook-static
|
|
|
|
test-results
|
|
playwright-report
|
|
playwright/.cache
|
|
download
|
|
|
|
# Cache
|
|
.eslintcache
|
|
next-env.d.ts
|
|
.rollup.cache
|
|
|
|
# Rust
|
|
target
|
|
*.node
|
|
tsconfig.node.tsbuildinfo
|
|
lib
|
|
affine.db
|
|
apps/web/next-routes.conf
|
|
.nx
|
|
|
|
packages/frontend/templates/edgeless
|
|
packages/frontend/core/public/static/templates
|
|
|
|
# script
|
|
af
|
|
af.cmd
|
|
*.resolved
|
|
|
|
# playwright
|
|
storageState.json
|