agents-manage-ui/cypress/e2e/components.cy.ts
Rama main · réplica de lectura del repositorio original.
/// <reference types="cypress" />
import { randomId } from '../support/utils';
describe('Components', () => {
it('should create a new component when adding JSON schema properties with form builder and without `required` field', () => {
cy.intercept('POST', '**/components**').as('createComponent');
cy.visit('/default/projects/activities-planner/components/new');
cy.get('input[name=name]').type(`test ${randomId()}`);
cy.get('textarea[name=description]').type('test description');
cy.contains('Add property').click();
cy.get('[placeholder="Property name"]').type('foo');
cy.get('[placeholder="Add description"]').type('bar');
cy.get('button[type="submit"]').should('not.be.disabled').click();
// Should redirect after successful creation
cy.location('pathname', { timeout: 30_000 }).should(
'eq',
'/default/projects/activities-planner/components'
);
});
it('should not override json schema when json mode is enabled by default', () => {
cy.visit('/default/projects/activities-planner/components/activities');
cy.get('[role=switch]').click();
cy.reload();
cy.contains('The type of event').should('exist');
});
describe('inPreview', () => {
it('should not have `inPreview` flag', () => {
cy.visit('/default/projects/activities-planner/components/new');
cy.contains('Add property').should('exist');
cy.contains('In Preview').should('not.exist');
});
it('should remove `inPreview` fields from editor', () => {
cy.visit('/default/projects/activities-planner/components/new');
cy.get('[role=switch]').click();
const editorValue = {
type: 'object',
properties: {
num: {
type: 'number',
inPreview: true,
},
},
};
cy.typeInMonaco('json-schema-data-component.json', JSON.stringify(editorValue));
// Switch to form builder
cy.get('[role=switch]').click();
// Switch to JSON schema editor
cy.get('[role=switch]').click();
// Wait for updated editor value
cy.contains('"additionalProperties": false').should('exist');
cy.assertMonacoContent('json-schema-data-component.json', (content) => {
const newEditorValue = {
...structuredClone(editorValue),
additionalProperties: false,
};
delete newEditorValue.properties.num.inPreview;
// To compare objects by value, deep equality
expect(JSON.parse(content)).to.deep.equal(newEditorValue);
});
});
});
});