diff --git a/IPython/html/tests/casperjs/test_cases/wigets_container.js b/IPython/html/tests/casperjs/test_cases/wigets_container.js
new file mode 100644
index 0000000..018a166
--- /dev/null
+++ b/IPython/html/tests/casperjs/test_cases/wigets_container.js
@@ -0,0 +1,80 @@
+// Test container class
+casper.notebook_test(function () {
+ index = this.append_cell(
+ 'from IPython.html import widgets\n' +
+ 'from IPython.display import display, clear_output\n' +
+ 'print("Success")');
+ this.execute_cell_then(index);
+
+ var container_index = this.append_cell(
+ 'container = widgets.ContainerWidget()\n' +
+ 'button = widgets.ButtonWidget()\n'+
+ 'container.children = [button]\n'+
+ 'display(container)\n'+
+ 'container.add_class("my-test-class")\n'+
+ 'print("Success")\n');
+ this.execute_cell_then(container_index, function(index){
+
+ this.test.assert(this.get_output_cell(index).text == 'Success\n',
+ 'Create container cell executed with correct output.');
+
+ this.test.assert(this.cell_element_exists(index,
+ '.widget-area .widget-subarea'),
+ 'Widget subarea exists.');
+
+ this.test.assert(this.cell_element_exists(index,
+ '.widget-area .widget-subarea .widget-container'),
+ 'Widget container exists.');
+
+ this.test.assert(this.cell_element_exists(index,
+ '.widget-area .widget-subarea .my-test-class'),
+ 'add_class works.');
+
+ this.test.assert(this.cell_element_exists(index,
+ '.widget-area .widget-subarea .my-test-class button'),
+ 'Container parent/child relationship works.');
+ });
+
+ index = this.append_cell(
+ 'container.set_css("float", "right")\n'+
+ 'print("Success")\n');
+ this.execute_cell_then(index, function(index){
+
+ this.test.assert(this.get_output_cell(index).text == 'Success\n',
+ 'Set container class CSS cell executed with correct output.');
+
+ this.test.assert(this.cell_element_function(container_index,
+ '.widget-area .widget-subarea .my-test-class', 'css', ['float'])=='right',
+ 'set_css works.');
+ });
+
+ index = this.append_cell(
+ 'container.remove_class("my-test-class")\n'+
+ 'print("Success")\n');
+ this.execute_cell_then(index, function(index){
+
+ this.test.assert(this.get_output_cell(index).text == 'Success\n',
+ 'Remove container class cell executed with correct output.');
+
+ this.test.assert(! this.cell_element_exists(container_index,
+ '.widget-area .widget-subarea .my-test-class'),
+ 'remove_class works.');
+ });
+
+ index = this.append_cell(
+ 'display(button)\n'+
+ 'print("Success")\n');
+ this.execute_cell_then(index, function(index){
+
+ this.test.assert(this.get_output_cell(index).text == 'Success\n',
+ 'Display container child executed with correct output.');
+
+ this.test.assert(! this.cell_element_exists(index,
+ '.widget-area .widget-subarea .widget-container'),
+ 'Parent container not displayed.');
+
+ this.test.assert(this.cell_element_exists(index,
+ '.widget-area .widget-subarea button'),
+ 'Child displayed.');
+ });
+});
\ No newline at end of file