Skip to content

Commit 2961d1f

Browse files
implemented drag-n-drop step (#45)
1 parent 6fc77eb commit 2961d1f

File tree

9 files changed

+108
-44
lines changed

9 files changed

+108
-44
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ All notable changes to the "@qavajs/steps-playwright" will be documented in this
44

55
Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file.
66

7+
## [0.0.21]
8+
- :rocket: added I drag and drop... step
9+
710
## [0.0.20]
811
- :rocket: enabled all options in new context
912
- :rocket: implemented context reload instead browser

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const App = require('./page_object');
1313
module.exports = {
1414
default: {
1515
require: [
16-
'node_modules/@qavajs/steps-playwright'
16+
'node_modules/@qavajs/steps-playwright/index.js'
1717
],
1818
browser: {
1919
timeout: {

package-lock.json

Lines changed: 39 additions & 39 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@qavajs/steps-playwright",
3-
"version": "0.0.20",
3+
"version": "0.0.21",
44
"description": "steps to interact with playwright",
55
"main": "./index.js",
66
"scripts": {
@@ -23,14 +23,14 @@
2323
},
2424
"homepage": "https://github.com/qavajs/steps-playwright#readme",
2525
"devDependencies": {
26-
"@cucumber/cucumber": "^9.1.0",
27-
"@qavajs/cli": "^0.0.21",
26+
"@cucumber/cucumber": "^9.1.2",
27+
"@qavajs/cli": "^0.0.22",
2828
"@qavajs/console-formatter": "^0.2.1",
2929
"@qavajs/memory": "^1.3.0",
3030
"@qavajs/po-playwright": "^0.0.9",
3131
"@qavajs/webstorm-adapter": "^8.0.0",
3232
"@qavajs/xunit-formatter": "^0.0.4",
33-
"@types/chai": "^4.3.4",
33+
"@types/chai": "^4.3.5",
3434
"@types/express": "^4.17.17",
3535
"@types/jest": "^29.5.1",
3636
"express": "^4.18.2",

src/actions.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,3 +268,16 @@ When('I type {string} to alert', async function (value: string) {
268268
resolve();
269269
}))
270270
});
271+
272+
/**
273+
* Drag&Drop one element to another
274+
* @param {string} elementAlias - element to drag
275+
* @param {string} targetAlias - target
276+
* @example I drag and drop 'Bishop' to 'E4'
277+
*/
278+
When('I drag and drop {string} to {string}', async function (elementAlias, targetAlias) {
279+
const element = await getElement(elementAlias);
280+
const target = await getElement(targetAlias);
281+
await element.dragTo(target);
282+
});
283+

test-e2e/apps/dragdrop.html

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<!DOCTYPE HTML>
2+
<html lang="en">
3+
<head>
4+
<style>
5+
#div1 {
6+
width: 350px;
7+
height: 70px;
8+
padding: 10px;
9+
border: 1px solid #aaaaaa;
10+
}
11+
</style>
12+
<script>
13+
function allowDrop(ev) {
14+
ev.preventDefault();
15+
}
16+
17+
function drag(ev) {
18+
ev.dataTransfer.setData("text", ev.target.id);
19+
}
20+
21+
function drop(ev) {
22+
ev.preventDefault();
23+
const data = ev.dataTransfer.getData("text");
24+
ev.target.appendChild(document.getElementById(data));
25+
}
26+
</script>
27+
<title></title>
28+
</head>
29+
<body>
30+
31+
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
32+
<br>
33+
<div id="drag1" draggable="true" ondragstart="drag(event)" style="background-color: #aaaaaa; height: 50px; width: 200px"></div>
34+
</body>
35+
</html>

test-e2e/features/dragdrop.feature

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Feature: Drag And Drop
2+
3+
Background:
4+
When I open '$dragDropPage' url
5+
6+
Scenario: drag and drop
7+
When I drag and drop 'Drag Element' to 'Drop Zone'
8+
And I expect 'Drag Element In Drop Zone' to be visible

test-e2e/memory/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export default class Memory {
88
waitsPage = file(resolve('./test-e2e/apps/waits.html'));
99
mockPage = file(resolve('./test-e2e/apps/mock.html'));
1010
storagePage = file(resolve('./test-e2e/apps/storage.html'));
11+
dragDropPage = file(resolve('./test-e2e/apps/dragdrop.html'));
1112

1213
array = (...args: Array<any>) => args;
1314

test-e2e/page_object/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ export default class App {
3838
LocalStorage = $('#localStorage');
3939
SessionStorage = $('#sessionStorage');
4040

41+
DropZone = $('div#div1');
42+
DragElement = $('div#drag1');
43+
DragElementInDropZone = $('div#div1 div#drag1');
44+
4145
}
4246

4347
class IgnoreHierarchyComponent extends Component {

0 commit comments

Comments
 (0)