UNPKG

wix-style-react

Version:
129 lines (111 loc) 5.11 kB
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;