wix-style-react
Version:
wix-style-react
129 lines (111 loc) • 5.11 kB
JavaScript
var _this2 = this;
function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
import { isFocused } from 'wix-ui-test-utils/protractor';
import buttonDriverFactory from './RichTextAreaButton.protractor.driver';
export var BUTTON_TYPES = ['bold', 'italic', 'underline', 'link', 'unordered-list', 'ordered-list'];
var richTextAreaDriverFactory = function richTextAreaDriverFactory(component) {
var getToolbarButton = function getToolbarButton(buttonIndex) {
return component.$('[data-hook="toolbar"]').$('[data-hook="rich-text-area-button-' + BUTTON_TYPES[buttonIndex] + '"]');
};
return {
element: function element() {
return component;
},
enterLinkUrl: function enterLinkUrl(link) {
return component.$('[data-hook="rich-text-area-link-url"] input').sendKeys(link);
},
enterLinkText: function enterLinkText(text) {
return component.$('[data-hook="rich-text-area-link-text"] input').sendKeys(text);
},
enterText: function enterText(text) {
return component.$('[data-hook="editor-wrapper"] > div[contenteditable="true"]').sendKeys(text);
},
insertLink: function insertLink() {
return component.$('button[type="submit"]').click();
},
getContent: function getContent() {
return component.$('[data-hook="editor-wrapper"] > div[contenteditable="true"]').getAttribute('innerHTML');
},
getText: function getText() {
return component.$('[data-hook="editor-wrapper"] > div[contenteditable="true"]').getText();
},
getToolbarButtonDriver: function getToolbarButtonDriver(buttonIndex) {
return buttonDriverFactory(getToolbarButton(buttonIndex));
},
selectLastWord: function selectLastWord() {
return browser.actions().doubleClick(component.$('[data-hook="editor-wrapper"] > div[contenteditable="true"]')).perform();
},
isLinkAdded: function isLinkAdded(link) {
var _this = this;
return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
var content;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return _this.getContent();
case 2:
content = _context.sent;
return _context.abrupt('return', content.indexOf('href="' + link + '"') !== -1);
case 4:
case 'end':
return _context.stop();
}
}
}, _callee, _this);
}))();
},
isEditorFocused: function isEditorFocused() {
return isFocused(component.$('[data-slate-editor="true"]'));
},
isButtonFocused: function isButtonFocused(buttonIndex) {
return isFocused(getToolbarButton(buttonIndex));
},
isLinkDialogVisible: function () {
var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { withText: true },
withText = _ref2.withText;
var until, textInput, urlInput;
return regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
until = protractor.ExpectedConditions;
if (!withText) {
_context2.next = 7;
break;
}
_context2.next = 4;
return component.$('[data-hook="rich-text-area-link-text"]');
case 4:
textInput = _context2.sent;
_context2.next = 7;
return browser.wait(until.presenceOf(textInput), 5000);
case 7:
_context2.next = 9;
return component.$('[data-hook="rich-text-area-link-url"]');
case 9:
urlInput = _context2.sent;
_context2.next = 12;
return browser.wait(until.presenceOf(urlInput), 5000);
case 12:
case 'end':
return _context2.stop();
}
}
}, _callee2, _this2);
}));
return function isLinkDialogVisible() {
return _ref.apply(this, arguments);
};
}(),
clickButton: function clickButton(buttonIndex) {
return isFocused(getToolbarButton(buttonIndex));
},
clickButtonByType: function clickButtonByType(type) {
return component.$('[data-hook="toolbar"]').$('[data-hook="rich-text-area-button-' + type + '"]').click();
}
};
};
export default richTextAreaDriverFactory;