var assert = require('assert');
var value = '';
Feature('string');
Scenario('should have correct initial value', async (I) => {
I.amOnPage('string-ace-editor.html');
I.click('.get-value');
value = await I.grabValueFrom('.debug');
assert.equal(value, '[]');
});
Scenario('should have coerent values', async (I) => {
I.amOnPage('string-ace-editor.html');
I.click('Add item');
I.see('item 1');
I.seeElement('.ace_editor');
I.click('.ace_editor');
I.pressKey('__YELLOW__');
I.see('__YELLOW__');
I.click('.get-value');
value = await I.grabValueFrom('.debug');
assert.equal(value, JSON.stringify([{"editor":"__YELLOW__"}]));
});
Scenario('should have correct initial value', async (I) => {
I.amOnPage('string-sceditor.html');
I.click('.get-value');
value = await I.grabValueFrom('.debug');
assert.equal(value, '[]');
});
Scenario('editor value and String editor should have coerent values', async (I) => {
I.amOnPage('string-sceditor.html');
I.click('Add item');
I.see('item 1');
// enters first iframe, writes text on the body and then exits
I.switchTo('[data-schemapath="root.0.editor"] iframe');
I.click('body');
I.pressKey('__YELLOW__');
I.see('__YELLOW__');
I.switchTo();
I.click('.get-value');
value = await I.grabValueFrom('.debug');
assert.equal(value, JSON.stringify([{"editor":"
__YELLOW__
"}]));
});
Scenario('Should work correctly in arrays @optional', async (I) => {
I.amOnPage('string-sceditor.html');
I.click('Add item');
I.click('Add item');
I.see('item 1');
I.see('item 2');
// enters first iframe, writes text on the body and then exits
I.switchTo('[data-schemapath="root.0.editor"] iframe');
I.click('body');
I.pressKey('__YELLOW__');
I.see('__YELLOW__');
I.switchTo();
// enters first iframe and read text
I.switchTo('[data-schemapath="root.0.editor"] iframe');
I.see('__YELLOW__');
I.switchTo();
// enters secod iframe, writes text on the body and then exits
I.switchTo('[data-schemapath="root.1.editor"] iframe');
I.click('body');
I.pressKey('__BLUE__');
I.see('__BLUE__');
I.switchTo();
// enters second iframe and read text
I.switchTo('[data-schemapath="root.1.editor"] iframe');
I.see('__BLUE__');
I.switchTo();
I.click('.get-value');
value = await I.grabValueFrom('.debug');
assert.equal(value, JSON.stringify([{"editor":"__YELLOW__
"},{"editor":"__BLUE__
"}]));
I.click('.json-editor-btn-movedown');
I.click('.get-value');
value = await I.grabValueFrom('.debug');
assert.equal(value, JSON.stringify([{"editor":"__BLUE__
"},{"editor":"__YELLOW__
"}]));
// the last 2 tests will fail because Sceditors iframes loose their content when the iframe is reloaded.
// enters first iframe and read text
I.switchTo('[data-schemapath="root.0.editor"] iframe');
I.see('__BLUE__');
I.switchTo();
// enters second iframe and read text
I.switchTo('[data-schemapath="root.1.editor"] iframe');
I.see('__YELLOW__');
I.switchTo();
});
Scenario('should be readonly if specified and not disabled', async (I) => {
I.amOnPage('read-only.html');
I.seeElement('[name="root[string]"]');
value = await I.grabAttributeFrom('[name="root[string]"]', 'readonly');
assert.equal(value, 'true');
});