mirror of
https://github.com/n8n-io/n8n.git
synced 2024-12-26 13:14:07 -08:00
071e6d6b6e
## Summary <img width="1240" alt="image" src="https://github.com/n8n-io/n8n/assets/8850410/2819f4ce-c343-431a-8a88-a1bc9c4b572a"> <img width="2649" alt="image" src="https://github.com/n8n-io/n8n/assets/8850410/36862aaf-cc4c-4668-bdc8-cf5a6f00babe"> 1. Add code node and open it 3. Click the fullscreen button in the bottom right 4. A fullscreen dialog should appear and allow editing the code 5. Changes made in the fullscreen dialog should be applied to the original code editor when closed It should work the same way for HTML/SQL/JSON editors ⚠️ Modal layout was updated so that modals/dialogs are centered, try to test some modals ## Related tickets and issues https://linear.app/n8n/issue/NODE-1009/add-fullscreen-view-to-code-node ## Review / Merge checklist - [ ] PR title and summary are descriptive. **Remember, the title automatically goes into the changelog. Use `(no-changelog)` otherwise.** ([conventions](https://github.com/n8n-io/n8n/blob/master/.github/pull_request_title_conventions.md)) - [ ] [Docs updated](https://github.com/n8n-io/n8n-docs) or follow-up ticket created. - [ ] Tests included. > A bug is not considered fixed, unless a test is added to prevent it from happening again. > A feature is not complete without tests. --------- Co-authored-by: Giulio Andreini <andreini@netseven.it>
89 lines
3.6 KiB
TypeScript
89 lines
3.6 KiB
TypeScript
import { WorkflowPage, NDV, CredentialsModal } from '../pages';
|
|
import { getVisiblePopper, getVisibleSelect } from '../utils';
|
|
|
|
const workflowPage = new WorkflowPage();
|
|
const ndv = new NDV();
|
|
const credentialsModal = new CredentialsModal();
|
|
|
|
const NO_CREDENTIALS_MESSAGE = 'Please add your credential';
|
|
const INVALID_CREDENTIALS_MESSAGE = 'Please check your credential';
|
|
const MODE_SELECTOR_LIST = 'From list';
|
|
|
|
describe('Resource Locator', () => {
|
|
beforeEach(() => {
|
|
workflowPage.actions.visit();
|
|
});
|
|
|
|
it('should render both RLC components in google sheets', () => {
|
|
workflowPage.actions.addInitialNodeToCanvas('Manual');
|
|
workflowPage.actions.addNodeToCanvas('Google Sheets', true, true, 'Update row in sheet');
|
|
ndv.getters.resourceLocator('documentId').should('be.visible');
|
|
ndv.getters.resourceLocator('sheetName').should('be.visible');
|
|
ndv.getters
|
|
.resourceLocatorModeSelector('documentId')
|
|
.find('input')
|
|
.should('have.value', MODE_SELECTOR_LIST);
|
|
ndv.getters
|
|
.resourceLocatorModeSelector('sheetName')
|
|
.find('input')
|
|
.should('have.value', MODE_SELECTOR_LIST);
|
|
});
|
|
|
|
it('should show appropriate error when credentials are not set', () => {
|
|
workflowPage.actions.addInitialNodeToCanvas('Manual');
|
|
workflowPage.actions.addNodeToCanvas('Google Sheets', true, true, 'Update row in sheet');
|
|
ndv.getters.resourceLocator('documentId').should('be.visible');
|
|
ndv.getters.resourceLocatorInput('documentId').click();
|
|
ndv.getters.resourceLocatorErrorMessage().should('contain', NO_CREDENTIALS_MESSAGE);
|
|
});
|
|
|
|
it('should show appropriate error when credentials are not valid', () => {
|
|
workflowPage.actions.addInitialNodeToCanvas('Manual');
|
|
workflowPage.actions.addNodeToCanvas('Google Sheets', true, true, 'Update row in sheet');
|
|
workflowPage.getters.nodeCredentialsSelect().click();
|
|
// Add oAuth credentials
|
|
getVisibleSelect().find('li').last().click();
|
|
credentialsModal.getters.credentialsEditModal().should('be.visible');
|
|
credentialsModal.getters.credentialAuthTypeRadioButtons().should('have.length', 2);
|
|
credentialsModal.getters.credentialAuthTypeRadioButtons().first().click();
|
|
credentialsModal.actions.fillCredentialsForm();
|
|
cy.get('.el-message-box').find('button').contains('Close').click();
|
|
ndv.getters.resourceLocatorInput('documentId').click();
|
|
ndv.getters.resourceLocatorErrorMessage().should('contain', INVALID_CREDENTIALS_MESSAGE);
|
|
});
|
|
|
|
it('should reset resource locator when dependent field is changed', () => {
|
|
workflowPage.actions.addInitialNodeToCanvas('Manual');
|
|
workflowPage.actions.addNodeToCanvas('Google Sheets', true, true, 'Update row in sheet');
|
|
ndv.actions.setRLCValue('documentId', '123');
|
|
ndv.actions.setRLCValue('sheetName', '123');
|
|
ndv.actions.setRLCValue('documentId', '321');
|
|
ndv.getters.resourceLocatorInput('sheetName').should('have.value', '');
|
|
});
|
|
|
|
// unlike RMC and remote options, RLC does not support loadOptionDependsOn
|
|
it('should retrieve list options when other params throw errors', () => {
|
|
workflowPage.actions.addInitialNodeToCanvas('E2e Test', { action: 'Resource Locator' });
|
|
|
|
ndv.getters.resourceLocatorInput('rlc').click();
|
|
|
|
cy.getByTestId('rlc-item').should('exist');
|
|
getVisiblePopper()
|
|
.should('have.length', 1)
|
|
.findChildByTestId('rlc-item')
|
|
.should('have.length', 5);
|
|
|
|
ndv.actions.setInvalidExpression({ fieldName: 'fieldId' });
|
|
|
|
ndv.getters.nodeParameters().click(); // remove focus from input, hide expression preview
|
|
|
|
ndv.getters.resourceLocatorInput('rlc').click();
|
|
|
|
cy.getByTestId('rlc-item').should('exist');
|
|
getVisiblePopper()
|
|
.should('have.length', 1)
|
|
.findChildByTestId('rlc-item')
|
|
.should('have.length', 5);
|
|
});
|
|
});
|