enabling "SLING-4555 Resource Editor: fixed e2e tests, node name handling in the add node dialog and added an initial version of the add node e2e test" again
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1676380 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/README b/README
index dc9b33c..ac4e114 100644
--- a/README
+++ b/README
@@ -12,8 +12,13 @@
o To have frontend changes automatically deployed call `mvn install -P autoInstallBundle -Dsling.mountByFS=true`
o To run the build on your local machine call './grunt desktop_build' within the frontend directory. It includes end to end tests with firefox and chrome.
o To have the less sources automatically compiled on change call `./grunt watch:less` in the frontend directory. Press Ctrl-Z to stop watching.
-o To have the 'desktop_build' target triggered on changes in the frontend tests, less sources, JavaScript files and JSP sources use call `./grunt watch:all` in the frontend directory and also press Ctrl-Z to stop watching.
+o To have the 'desktop_build' target triggered on changes in the frontend tests, less sources, JavaScript files and JSP sources use `./grunt watch:all` in the frontend directory and also press Ctrl-Z to stop watching.
+o To get the end to end tests triggered by changes use './grunt watch:e2e' in the frontend directory and also press Ctrl-Z to stop watching.
+++ Debugging the the end to end tests ++
+o You can still use 'console.log()' and JSON.stringify(display) to inspect JSON values of a test spec.
+o You can use 'client.pause([milliseconds]);' in you test spec to pause and also inspect the browser status.
+o To set breakpoints in a test spec you can use a JavaScript IDE like 'Webstorm'
Enjoy!
\ No newline at end of file
diff --git a/frontend/Gruntfile.js b/frontend/Gruntfile.js
index 7348b0e..0e53f05 100644
--- a/frontend/Gruntfile.js
+++ b/frontend/Gruntfile.js
@@ -57,6 +57,7 @@
'bootstrap/dist/js/bootstrap.min.js',
'select2/select2.min.js',
'jquery/dist/jquery.min.js',
+ 'jquery/dist/jquery.min.map',
'bootbox/bootbox.min.js',
'jstree/dist/jstree.min.js'
], // Actual pattern(s) to match.
@@ -73,6 +74,7 @@
src: [
'select2/select2.css',
'select2/select2.png',
+ 'select2/select2-spinner.gif',
'animate.css/animate.min.css',
'jstree/dist/themes/default/style.min.css',
'jstree/dist/themes/default/32px.png',
@@ -115,8 +117,6 @@
},
webdriver: {
options: {
- host: 'localhost',
- port: 8080
},
chrome: {
tests: [e2eTestSpecFolder],
diff --git a/src/main/resources/SLING-INF/libs/sling/resource-editor-static-content/js/tree/AddNodeController.js b/src/main/resources/SLING-INF/libs/sling/resource-editor-static-content/js/tree/AddNodeController.js
index e3f510e..76d8566 100644
--- a/src/main/resources/SLING-INF/libs/sling/resource-editor-static-content/js/tree/AddNodeController.js
+++ b/src/main/resources/SLING-INF/libs/sling/resource-editor-static-content/js/tree/AddNodeController.js
@@ -73,12 +73,12 @@
})
});
};
-
+
AddNodeController.prototype.addNode = function() {
var thatAddNodeController = this;
- var nodeName = this.latestEnteredNodeName.trim();
- var nodeType = $("#nodeType").val();
- var resourceType = (this.latestEnteredResType != null && this.latestEnteredResType != "") ? this.latestEnteredResType.trim() : "";
+ var nodeName = this.latestEnteredNodeName;
+ var nodeType = $("#nodeType").select2("val");
+ var resourceType = this.latestEnteredResType;
var data = {"_charset_": "utf-8"};
if ("" != nodeType){
@@ -205,19 +205,13 @@
$("#nodeName").select2({
placeholder: "Enter or select a node name",
allowClear: true,
- selectOnBlur: true,
+ dropdownCssClass: "node_name_dd_container",
data: nodeNameObjects,
createSearchChoice: function(searchTerm){
+ thatAddNodeController.latestEnteredNodeName = searchTerm;
return {id:searchTerm, text:searchTerm};
}
});
- $("#nodeName").on("select2-highlight", function(e) {
- /* In Select2 there is currently no way of getting
- * the highlighted (newly entered but not yet selected) text.
- * But there is this event. Thats why I use this one.
- */
- thatAddNodeController.latestEnteredNodeName=e.val;
- })
var nodeNameList = Object.keys(appliCnTypesByNodeName);
nodeNameList.sort();
@@ -270,16 +264,13 @@
selectOnBlur: true,
data: data,
createSearchChoice: function(searchTerm){
+ thatAddNodeController.latestEnteredResType = searchTerm;
return {id:searchTerm, text:searchTerm};
}
}).data("select2");
- $("#resourceType").on("select2-highlight", function(e) {
- /* In Select2 there is currently no way of getting
- * the highlighted (newly entered but not yet selected) text.
- * But there is this event. Thats why I use this one.
- */
- thatAddNodeController.latestEnteredResType=e.val;
- })
+ $("#resourceType").on("select2-loaded", function() {
+ $('#addNodeDialog').append('<div class="add-node-finished"></div>');
+ });
});
}
diff --git a/src/main/resources/SLING-INF/libs/sling/resource-editor/html.jsp b/src/main/resources/SLING-INF/libs/sling/resource-editor/html.jsp
index f5ed1d6..b1ff7e1 100644
--- a/src/main/resources/SLING-INF/libs/sling/resource-editor/html.jsp
+++ b/src/main/resources/SLING-INF/libs/sling/resource-editor/html.jsp
@@ -324,5 +324,6 @@
</div>
</div>
</div>
+ <div id="last-element"></div>
</body>
</html>
diff --git a/src/test/javascript/e2e/spec/e2e_spec.js b/src/test/javascript/e2e/spec/e2e_spec.js
index 12b1408..091bd2b 100644
--- a/src/test/javascript/e2e/spec/e2e_spec.js
+++ b/src/test/javascript/e2e/spec/e2e_spec.js
@@ -2,16 +2,62 @@
var assert = require('assert');
-describe('The Apache Sling Resource Editor', function() {
- browser = browser.url('http://localhost:8080/reseditor/.html');
- // Find a way to specify the host and the port via grunt. See
+describe('A user of the Apache Sling Resource Editor', function() {
+ var homeURL = 'http://localhost:8080/reseditor/.html';
+ var client = browser.url(homeURL);
+ // TODO: Find a way to specify the host and the port via grunt. See
// http://stackoverflow.com/questions/29370075/how-to-pass-parameters-from-the-gruntfile-js-to-the-webdriverio-spec
-
- it('should have a title', function(done) {
- browser
- .getTitle(function(err,title) {
- assert(title.indexOf('Apache Sling Resource Editor') !== -1);
+ client.timeouts("script", 500);
+
+ describe('can open the add node dialog with', function() {
+ it('the icon', function(done) {
+ client = client.url(homeURL);
+ client.waitForExist('#last-element', function(err) {
+ client.click('#root_anchor i.add-icon', function(err, res) {
+ client.waitForVisible('#addNodeDialog', function(err) {
+ client.getCssProperty('#addNodeDialog', 'display', function(err, display) {
+ assert(typeof err === "undefined" || err === null);
+ assert(display.value === "block");
+ });
+ });
+ })
+ })
+ .call(done);
+ });
+
+ it('the shortcut', function(done) {
+ client = client.url(homeURL);
+ client.waitForExist('#last-element', function(err) {
+ client.click('#root_anchor i.add-icon', function(err, res) {
+ client.keys("a", function(err) {
+ client.waitForVisible('#addNodeDialog', function(err) {
+ client.getCssProperty('#addNodeDialog', 'display', function(err, display) {
+ assert(typeof err === "undefined" || err === null);
+ assert(display.value === "block");
+ });
+ });
+ });
+ })
+ })
+ .call(done);
+ });
+ });
+
+ it('can add an unstructured node to the root node', function(done) {
+ client = client.url(homeURL);
+ client.waitForExist('#last-element', function(err) {
+ client.click('#root_anchor i.add-icon', function(err, res) {
+ client.waitForVisible('#addNodeDialog .add-node-finished', function(err) {
+ client.setValue('.node_name_dd_container input', 'testnode');
+ client.addValue('.node_name_dd_container input', 'Return'); // presses the 'return' key
+ client.click('#addNodeDialog .btn.btn-primary.submit', function(err, res) {
+ client.pause(3000);
+ });
+ });
+
+ })
})
.call(done);
});
+
});
\ No newline at end of file