Skip to content

Commit 21afe21

Browse files
author
Vaha
committed
improved event handlers for prompt widget
1 parent 2d46d98 commit 21afe21

7 files changed

+184
-0
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
11+
<actionGroup name="ClickInsertEditImageTinyMCEButtonActionGroup">
12+
<annotations>
13+
<description>Clicks on the 'Insert/edit image' TinyMCE button.</description>
14+
</annotations>
15+
16+
<click selector="{{TinyMCESection.InsertImageIcon}}" stepKey="clickInsertImageBtn" />
17+
<waitForPageLoad stepKey="waitForPageLoad"/>
18+
</actionGroup>
19+
</actionGroups>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
11+
<actionGroup name="CreateImageFolderByEnterKeyActionGroup" extends="CreateImageFolderActionGroup">
12+
<annotations>
13+
<description>Creates a folder (by enter key) in the Media Gallery based on the provided Folder.</description>
14+
</annotations>
15+
16+
<pressKey selector="{{MediaGallerySection.FolderName}}" parameterArray="[\Facebook\WebDriver\WebDriverKeys::ENTER]" stepKey="acceptFolderName"/>
17+
</actionGroup>
18+
</actionGroups>
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
11+
<actionGroup name="DeleteFolderActionGroup">
12+
<annotations>
13+
<description>Deletes the provided folder by name from the Media Gallery.</description>
14+
</annotations>
15+
<arguments>
16+
<argument name="ImageFolder" defaultValue="ImageFolder"/>
17+
</arguments>
18+
19+
<click userInput="{{ImageFolder.name}}" stepKey="clickOnCreatedFolder"/>
20+
<waitForLoadingMaskToDisappear stepKey="waitForLoading"/>
21+
<see selector="{{MediaGallerySection.DeleteFolder}}" userInput="Delete Folder" stepKey="seeDeleteFolderBtn"/>
22+
<click selector="{{MediaGallerySection.DeleteFolder}}" stepKey="clickDeleteFolderBtn"/>
23+
<waitForText userInput="OK" stepKey="waitForConfirm"/>
24+
<click selector="{{MediaGallerySection.confirmDelete}}" stepKey="confirmDelete"/>
25+
<waitForPageLoad stepKey="waitForPopUpHide"/>
26+
<dontSeeElement selector="{{ImageFolder.name}}" stepKey="dontSeeFolderName"/>
27+
</actionGroup>
28+
</actionGroups>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
9+
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
11+
<actionGroup name="PressEscImageFolderActionGroup">
12+
<annotations>
13+
<description>Opens the 'create folder' modal, fills 'folder name' input with provided folder name,
14+
presses escape key to cancel folder creation (close modal).</description>
15+
</annotations>
16+
<arguments>
17+
<argument name="ImageFolder" defaultValue="ImageFolder"/>
18+
</arguments>
19+
20+
<click selector="{{MediaGallerySection.CreateFolder}}" stepKey="createFolder"/>
21+
<waitForElementVisible selector="{{MediaGallerySection.FolderName}}" stepKey="waitForPopUp"/>
22+
<fillField selector="{{MediaGallerySection.FolderName}}" userInput="{{ImageFolder.name}}" stepKey="fillFolderName"/>
23+
<pressKey selector="{{MediaGallerySection.FolderName}}" parameterArray="[\Facebook\WebDriver\WebDriverKeys::ESCAPE]" stepKey="cancelFolderName"/>
24+
<waitForPageLoad stepKey="waitForPopUpHide"/>
25+
<dontSeeElement selector="{{ImageFolder.name}}" stepKey="dontSeeFolderName"/>
26+
</actionGroup>
27+
</actionGroups>

app/code/Magento/Cms/Test/Mftf/Section/TinyMCESection.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
<element name="insertBtn" type="button" selector="#insert"/>
5252
<element name="InsertFile" type="text" selector="#insert_files"/>
5353
<element name="CreateFolder" type="button" selector="#new_folder" />
54+
<element name="DeleteFolder" type="button" selector="#delete_folder" />
5455
<element name="DeleteSelectedBtn" type="text" selector="#delete_files"/>
5556
<element name="CancelBtn" type="button" selector="#cancel" />
5657
<element name="FolderName" type="button" selector="input[data-role='promptField']" />
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
/**
4+
* Copyright © Magento, Inc. All rights reserved.
5+
* See COPYING.txt for license details.
6+
*/
7+
-->
8+
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
9+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
10+
<test name="AdminCheckCreateFolderEscapeAndEnterHandlesForWYSIWYGBlockTest">
11+
<annotations>
12+
<features value="Cms"/>
13+
<stories value="WYSIWYG toolbar configuration with Magento Media Gallery"/>
14+
<group value="Cms"/>
15+
<title value="Admin should be able to cancel and close 'create folder' modal window using ESC key and
16+
to add image to new folder (using enter key) for WYSIWYG content of Block"/>
17+
<description value="Admin should be able to cancel and close 'create folder' modal window using ESC key and
18+
to add image to new folder (using enter key) for WYSIWYG content of Block"/>
19+
</annotations>
20+
21+
<before>
22+
<createData entity="_defaultBlock" stepKey="createPreReqBlock" />
23+
<actionGroup ref="LoginActionGroup" stepKey="login"/>
24+
<actionGroup ref="EnabledWYSIWYGActionGroup" stepKey="enableWYSIWYG"/>
25+
<actionGroup ref="SwitchToVersion4ActionGroup" stepKey="switchToTinyMCE4" />
26+
</before>
27+
28+
<after>
29+
<deleteData createDataKey="createPreReqBlock" stepKey="deletePreReqBlock" />
30+
<actionGroup ref="DisabledWYSIWYGActionGroup" stepKey="disableWYSIWYG"/>
31+
<actionGroup ref="logout" stepKey="logout"/>
32+
</after>
33+
34+
<actionGroup ref="NavigateToCreatedCMSBlockPageActionGroup" stepKey="navigateToCreatedCMSBlockPage">
35+
<argument name="CMSBlockPage" value="$$createPreReqBlock$$"/>
36+
</actionGroup>
37+
<actionGroup ref="ClickInsertEditImageTinyMCEButtonActionGroup" stepKey="clickInsertImageIcon"/>
38+
<actionGroup ref="ClickBrowseBtnOnUploadPopupActionGroup" stepKey="clickBrowserBtn"/>
39+
<actionGroup ref="VerifyMediaGalleryStorageActionsActionGroup" stepKey="VerifyMediaGalleryStorageBtn"/>
40+
41+
<actionGroup ref="CreateImageFolderByEnterKeyActionGroup" stepKey="CreateImageFolderByEnterKeyPress">
42+
<argument name="ImageFolder" value="ImageFolder"/>
43+
</actionGroup>
44+
45+
<actionGroup ref="DeleteFolderActionGroup" stepKey="DeleteCreatedFolder">
46+
<argument name="ImageFolder" value="ImageFolder"/>
47+
</actionGroup>
48+
49+
<actionGroup ref="PressEscImageFolderActionGroup" stepKey="CancelImageFolderCreation">
50+
<argument name="ImageFolder" value="ImageFolder"/>
51+
</actionGroup>
52+
</test>
53+
</tests>

app/code/Magento/Ui/view/base/web/js/modal/prompt.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,44 @@ define([
2727
value: '',
2828
validation: false,
2929
validationRules: [],
30+
keyEventHandlers: {
31+
32+
/**
33+
* Enter key press handler,
34+
* submit result and close modal window
35+
* @param {Object} event - event
36+
*/
37+
enterKey: function (event) {
38+
if (this.options.isOpen && this.modal.find(document.activeElement).length ||
39+
this.options.isOpen && this.modal[0] === document.activeElement) {
40+
this.closeModal(true);
41+
event.preventDefault();
42+
}
43+
},
44+
45+
/**
46+
* Tab key press handler,
47+
* set focus to elements
48+
*/
49+
tabKey: function () {
50+
if (document.activeElement === this.modal[0]) {
51+
this._setFocus('start');
52+
}
53+
},
54+
55+
/**
56+
* Escape key press handler,
57+
* cancel and close modal window
58+
* @param {Object} event - event
59+
*/
60+
escapeKey: function (event) {
61+
if (this.options.isOpen && this.modal.find(document.activeElement).length ||
62+
this.options.isOpen && this.modal[0] === document.activeElement) {
63+
this.closeModal();
64+
event.preventDefault();
65+
}
66+
}
67+
},
3068
actions: {
3169

3270
/**

0 commit comments

Comments
 (0)