mirror of
https://github.com/open-webui/open-webui
synced 2024-11-16 13:40:55 +00:00
123 lines
3.3 KiB
TypeScript
123 lines
3.3 KiB
TypeScript
/// <reference types="cypress" />
|
|
// eslint-disable-next-line @typescript-eslint/triple-slash-reference
|
|
/// <reference path="../support/index.d.ts" />
|
|
|
|
export const adminUser = {
|
|
name: 'Admin User',
|
|
email: 'admin@example.com',
|
|
password: 'password'
|
|
};
|
|
|
|
const login = (email: string, password: string) => {
|
|
return cy.session(
|
|
email,
|
|
() => {
|
|
// Make sure to test against us english to have stable tests,
|
|
// regardless on local language preferences
|
|
localStorage.setItem('locale', 'en-US');
|
|
// Visit auth page
|
|
cy.visit('/auth');
|
|
// Fill out the form
|
|
cy.get('input[autocomplete="email"]').type(email);
|
|
cy.get('input[type="password"]').type(password);
|
|
// Submit the form
|
|
cy.get('button[type="submit"]').click();
|
|
// Wait until the user is redirected to the home page
|
|
cy.get('#chat-search').should('exist');
|
|
// Get the current version to skip the changelog dialog
|
|
if (localStorage.getItem('version') === null) {
|
|
cy.get('button').contains("Okay, Let's Go!").click();
|
|
}
|
|
},
|
|
{
|
|
validate: () => {
|
|
cy.request({
|
|
method: 'GET',
|
|
url: '/api/v1/auths/',
|
|
headers: {
|
|
Authorization: 'Bearer ' + localStorage.getItem('token')
|
|
}
|
|
});
|
|
}
|
|
}
|
|
);
|
|
};
|
|
|
|
const register = (name: string, email: string, password: string) => {
|
|
return cy
|
|
.request({
|
|
method: 'POST',
|
|
url: '/api/v1/auths/signup',
|
|
body: {
|
|
name: name,
|
|
email: email,
|
|
password: password
|
|
},
|
|
failOnStatusCode: false
|
|
})
|
|
.then((response) => {
|
|
expect(response.status).to.be.oneOf([200, 400]);
|
|
});
|
|
};
|
|
|
|
const registerAdmin = () => {
|
|
return register(adminUser.name, adminUser.email, adminUser.password);
|
|
};
|
|
|
|
const loginAdmin = () => {
|
|
return login(adminUser.email, adminUser.password);
|
|
};
|
|
|
|
Cypress.Commands.add('login', (email, password) => login(email, password));
|
|
Cypress.Commands.add('register', (name, email, password) => register(name, email, password));
|
|
Cypress.Commands.add('registerAdmin', () => registerAdmin());
|
|
Cypress.Commands.add('loginAdmin', () => loginAdmin());
|
|
|
|
Cypress.Commands.add('uploadTestDocument', (suffix: any) => {
|
|
// Login as admin
|
|
cy.loginAdmin();
|
|
// upload example document
|
|
cy.visit('/workspace/documents');
|
|
// Create a document
|
|
cy.get("button[aria-label='Add Docs']").click();
|
|
cy.readFile('cypress/data/example-doc.txt').then((text) => {
|
|
// select file
|
|
cy.get('#upload-doc-input').selectFile(
|
|
{
|
|
contents: Cypress.Buffer.from(text + Date.now()),
|
|
fileName: `document-test-initial-${suffix}.txt`,
|
|
mimeType: 'text/plain',
|
|
lastModified: Date.now()
|
|
},
|
|
{
|
|
force: true
|
|
}
|
|
);
|
|
// open tag input
|
|
cy.get("button[aria-label='Add Tag']").click();
|
|
cy.get("input[placeholder='Add a tag']").type('cypress-test');
|
|
cy.get("button[aria-label='Save Tag']").click();
|
|
|
|
// submit to upload
|
|
cy.get("button[type='submit']").click();
|
|
|
|
// wait for upload to finish
|
|
cy.get('button').contains('#cypress-test').should('exist');
|
|
cy.get('div').contains(`document-test-initial-${suffix}.txt`).should('exist');
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add('deleteTestDocument', (suffix: any) => {
|
|
cy.loginAdmin();
|
|
cy.visit('/workspace/documents');
|
|
// clean up uploaded documents
|
|
cy.get('div')
|
|
.contains(`document-test-initial-${suffix}.txt`)
|
|
.find("button[aria-label='Delete Doc']")
|
|
.click();
|
|
});
|
|
|
|
before(() => {
|
|
cy.registerAdmin();
|
|
});
|