def submit_metadata(metadata_modal, name, description=None, version=None, load_workspace=False): """ Submits metadata for a project Returns ``(projects_page, data)`` """ metadata_modal.submit_metadata(name, description, version) workspace_page = WorkspacePage.verify(metadata_modal.browser, TEST_CONFIG['port']) if not load_workspace: return workspace_page.close_workspace() return workspace_page
def edit_file(workspace_page): if broken_chrome(): print "Skipping testing metadata after editing file due to broken chrome driver." return False workspace_window = browser.current_window_handle editor_page = workspace_page.open_editor() editor_page.edit_file('test_file.py', dclick=False) editor_page.add_text_to_file('#just a comment\n') editor_page.save_document(check=False) browser.switch_to_window(workspace_window) port = workspace_page.port workspace_page = WorkspacePage.verify(browser, port)
def _test_macro(browser): projects_page, project_info_page, project_dict, workspace_page = startup( browser) # Open code editor. workspace_window = browser.current_window_handle editor_page = workspace_page.open_editor() # Create a file (code editor automatically indents). editor_page.new_file( 'foo.py', """ from openmdao.main.api import Component from openmdao.lib.datatypes.api import Float class Foo(Component): a = Float(0.0, iotype='in') b = Float(0.0, iotype='out') """) # Back to workspace. browser.close() browser.switch_to_window(workspace_window) # Add some Foo instances. workspace_page.show_dataflow('top') workspace_page.set_library_filter('In Project') workspace_page.add_library_item_to_dataflow('foo.Foo', 'comp1') workspace_page.add_library_item_to_dataflow('foo.Foo', 'comp2') comp1 = workspace_page.get_dataflow_figure('comp1', 'top') comp2 = workspace_page.get_dataflow_figure('comp2', 'top') conn_page = workspace_page.connect(comp1, comp2) conn_page.connect_vars('comp1.b', 'comp2.a') conn_page.close() workspace_page.commit_project('added some Foos') editor_page = workspace_page.open_editor() editor_page.edit_file('foo.py', dclick=False) editor_page.add_text_to_file('#just a comment\n') # forces a save and reload of project editor_page.save_document(overwrite=True, check=False) browser.switch_to_window(workspace_window) port = workspace_page.port workspace_page = WorkspacePage.verify(browser, port) workspace_page.show_dataflow('top') time.sleep(0.5) eq(sorted(workspace_page.get_dataflow_component_names()), ['comp1', 'comp2', 'driver', 'top']) # Check if running a component is recorded (it shouldn't be). top = workspace_page.get_dataflow_figure('top') top.run() message = NotifierPage.wait(workspace_page) eq(message, 'Run complete: success') history = workspace_page.history.split('\n') eq(history[-2], 'Executing...') eq(history[-1], 'Execution complete.') workspace_page.toggle_files('foo.py') workspace_page.expand_folder('_macros') editor = workspace_page.edit_file('_macros/default') contents = editor.get_code() browser.close() browser.switch_to_window(workspace_window) for line in contents.split('\n'): if 'run' in line: raise AssertionError(line) # Check if command errors are recorded (they shouldn't be). workspace_page.do_command('print xyzzy', ack=False) # We expect 2 notifiers: command complete and error. # These will likely overlap in a manner that 'Ok' is found but # later is hidden by the second notifier. try: # We expect 2 notifiers: command complete and error. msg = NotifierPage.wait(workspace_page, base_id='command') except WebDriverException as exc: if 'Element is not clickable' in str(exc): err = NotifierPage.wait(workspace_page) msg = NotifierPage.wait(workspace_page, base_id='command') else: err = NotifierPage.wait(workspace_page) if err != "NameError: name 'xyzzy' is not defined": raise AssertionError('Unexpected message: %r' % err) editor = workspace_page.edit_file('_macros/default') contents = editor.get_code() browser.close() browser.switch_to_window(workspace_window) for line in contents.split('\n'): if 'xyzzy' in line: raise AssertionError(line) # Clean up. closeout(projects_page, project_info_page, project_dict, workspace_page)
def _test_macro(browser): project_dict, workspace_page = startup(browser) # Open code editor. workspace_window = browser.current_window_handle editor_page = workspace_page.open_editor() # Create a file (code editor automatically indents). editor_page.new_file('foo.py', """ from openmdao.main.api import Component from openmdao.main.datatypes.api import Float class Foo(Component): a = Float(0.0, iotype='in') b = Float(0.0, iotype='out') """) # Back to workspace. browser.close() browser.switch_to_window(workspace_window) # Add some Foo instances. workspace_page.add_library_item_to_dataflow('openmdao.main.assembly.Assembly', 'top') workspace_page.show_dataflow('top') time.sleep(2) # Wait for it to get registered. workspace_page.set_library_filter('In Project') workspace_page.add_library_item_to_dataflow('foo.Foo', 'comp1') workspace_page.add_library_item_to_dataflow('foo.Foo', 'comp2') comp1 = workspace_page.get_dataflow_figure('comp1', 'top') comp2 = workspace_page.get_dataflow_figure('comp2', 'top') conn_page = workspace_page.connect(comp1, comp2) conn_page.connect_vars('comp1.b', 'comp2.a') conn_page.close() workspace_page.commit_project('added some Foos') if broken_chrome(): raise SkipTest('Test broken for chrome/selenium combination') editor_page = workspace_page.open_editor() editor_page.edit_file('foo.py', dclick=False) editor_page.add_text_to_file('#just a comment\n') # forces a save and reload of project editor_page.save_document(overwrite=True, check=False) browser.switch_to_window(workspace_window) port = workspace_page.port workspace_page = WorkspacePage.verify(browser, port) workspace_page.show_dataflow('top') time.sleep(0.5) eq(sorted(workspace_page.get_dataflow_component_names()), ['comp1', 'comp2', 'driver', 'top']) # Check if running a component is recorded (it shouldn't be). top = workspace_page.get_dataflow_figure('top') top.run() message = NotifierPage.wait(workspace_page) eq(message, 'Run complete: success') history = workspace_page.history.split('\n') eq(history[-2], 'Executing...') eq(history[-1], 'Execution complete.') workspace_page.toggle_files('foo.py') workspace_page.expand_folder('_macros') editor = workspace_page.edit_file('_macros/default') contents = editor.get_code() browser.close() browser.switch_to_window(workspace_window) for line in contents.split('\n'): if 'run' in line: raise AssertionError(line) # Check if command errors are recorded (they shouldn't be). workspace_page.do_command('print xyzzy', ack=False) NotifierPage.wait(workspace_page, base_id='command') expected = "NameError: name 'xyzzy' is not defined" assert workspace_page.history.endswith(expected) editor = workspace_page.edit_file('_macros/default') contents = editor.get_code() browser.close() browser.switch_to_window(workspace_window) for line in contents.split('\n'): if 'xyzzy' in line: raise AssertionError(line) # Clean up. closeout(project_dict, workspace_page)
def _test_macro(browser): projects_page, project_info_page, project_dict, workspace_page = startup(browser) # Open code editor. workspace_window = browser.current_window_handle editor_page = workspace_page.open_editor() # Create a file (code editor automatically indents). editor_page.new_file( "foo.py", """ from openmdao.main.api import Component from openmdao.lib.datatypes.api import Float class Foo(Component): a = Float(0.0, iotype='in') b = Float(0.0, iotype='out') """, ) # Back to workspace. browser.close() browser.switch_to_window(workspace_window) # Add some Foo instances. workspace_page.show_dataflow("top") workspace_page.set_library_filter("In Project") workspace_page.add_library_item_to_dataflow("foo.Foo", "comp1") workspace_page.add_library_item_to_dataflow("foo.Foo", "comp2") comp1 = workspace_page.get_dataflow_figure("comp1", "top") comp2 = workspace_page.get_dataflow_figure("comp2", "top") conn_page = workspace_page.connect(comp1, comp2) conn_page.connect_vars("comp1.b", "comp2.a") conn_page.close() workspace_page.commit_project("added some Foos") editor_page = workspace_page.open_editor() editor_page.edit_file("foo.py", dclick=False) editor_page.add_text_to_file("#just a comment\n") # forces a save and reload of project editor_page.save_document(overwrite=True, check=False) browser.switch_to_window(workspace_window) port = workspace_page.port workspace_page = WorkspacePage.verify(browser, port) workspace_page.show_dataflow("top") time.sleep(0.5) eq(sorted(workspace_page.get_dataflow_component_names()), ["comp1", "comp2", "driver", "top"]) # Check if running a component is recorded (it shouldn't be). top = workspace_page.get_dataflow_figure("top") top.run() message = NotifierPage.wait(workspace_page) eq(message, "Run complete: success") history = workspace_page.history.split("\n") eq(history[-2], "Executing...") eq(history[-1], "Execution complete.") workspace_page.toggle_files("foo.py") workspace_page.expand_folder("_macros") editor = workspace_page.edit_file("_macros/default") contents = editor.get_code() browser.close() browser.switch_to_window(workspace_window) for line in contents.split("\n"): if "run" in line: raise AssertionError(line) # Check if command errors are recorded (they shouldn't be). workspace_page.do_command("print xyzzy", ack=False) # We expect 2 notifiers: command complete and error. # These will likely overlap in a manner that 'Ok' is found but # later is hidden by the second notifier. try: # We expect 2 notifiers: command complete and error. msg = NotifierPage.wait(workspace_page, base_id="command") except WebDriverException as exc: if "Element is not clickable" in str(exc): err = NotifierPage.wait(workspace_page) msg = NotifierPage.wait(workspace_page, base_id="command") else: err = NotifierPage.wait(workspace_page) if err != "NameError: name 'xyzzy' is not defined": raise AssertionError("Unexpected message: %r" % err) editor = workspace_page.edit_file("_macros/default") contents = editor.get_code() browser.close() browser.switch_to_window(workspace_window) for line in contents.split("\n"): if "xyzzy" in line: raise AssertionError(line) # Clean up. closeout(projects_page, project_info_page, project_dict, workspace_page)
def _test_macro(browser): project_dict, workspace_page = startup(browser) # Open code editor. workspace_window = browser.current_window_handle editor_page = workspace_page.open_editor() # Create a file (code editor automatically indents). editor_page.new_file( 'foo.py', """ from openmdao.main.api import Component from openmdao.main.datatypes.api import Float class Foo(Component): a = Float(0.0, iotype='in') b = Float(0.0, iotype='out') """) # Back to workspace. browser.close() browser.switch_to_window(workspace_window) # Add some Foo instances. workspace_page.add_library_item_to_dataflow( 'openmdao.main.assembly.Assembly', 'top') workspace_page.show_dataflow('top') time.sleep(2) # Wait for it to get registered. workspace_page.set_library_filter('In Project') workspace_page.add_library_item_to_dataflow('foo.Foo', 'comp1') workspace_page.add_library_item_to_dataflow('foo.Foo', 'comp2') comp1 = workspace_page.get_dataflow_figure('comp1', 'top') comp2 = workspace_page.get_dataflow_figure('comp2', 'top') conn_page = workspace_page.connect(comp1, comp2) conn_page.connect_vars('comp1.b', 'comp2.a') conn_page.close() workspace_page.commit_project('added some Foos') if broken_chrome(): raise SkipTest('Test broken for chrome/selenium combination') editor_page = workspace_page.open_editor() editor_page.edit_file('foo.py', dclick=False) editor_page.add_text_to_file('#just a comment\n') # forces a save and reload of project editor_page.save_document(overwrite=True, check=False) browser.switch_to_window(workspace_window) port = workspace_page.port workspace_page = WorkspacePage.verify(browser, port) workspace_page.show_dataflow('top') time.sleep(0.5) eq(sorted(workspace_page.get_dataflow_component_names()), ['comp1', 'comp2', 'driver', 'top']) # Check if running a component is recorded (it shouldn't be). top = workspace_page.get_dataflow_figure('top') top.run() message = NotifierPage.wait(workspace_page) eq(message, 'Run complete: success') history = workspace_page.history.split('\n') eq(history[-2], 'Executing...') eq(history[-1], 'Execution complete.') workspace_page.toggle_files('foo.py') workspace_page.expand_folder('_macros') editor = workspace_page.edit_file('_macros/default') contents = editor.get_code() browser.close() browser.switch_to_window(workspace_window) for line in contents.split('\n'): if 'run' in line: raise AssertionError(line) # Check if command errors are recorded (they shouldn't be). workspace_page.do_command('print xyzzy', ack=False) NotifierPage.wait(workspace_page, base_id='command') expected = "NameError: name 'xyzzy' is not defined" assert workspace_page.history.endswith(expected) editor = workspace_page.edit_file('_macros/default') contents = editor.get_code() browser.close() browser.switch_to_window(workspace_window) for line in contents.split('\n'): if 'xyzzy' in line: raise AssertionError(line) # Clean up. closeout(project_dict, workspace_page)
def _test_macro(browser): project_dict, workspace_page = startup(browser) # Open code editor. workspace_window = browser.current_window_handle editor_page = workspace_page.open_editor() # Create a file (code editor automatically indents). editor_page.new_file('foo.py', """ from openmdao.main.api import Component from openmdao.lib.datatypes.api import Float class Foo(Component): a = Float(0.0, iotype='in') b = Float(0.0, iotype='out') """) # Back to workspace. browser.close() browser.switch_to_window(workspace_window) # Add some Foo instances. workspace_page.show_dataflow('top') time.sleep(1) # Wait for it to get registered. workspace_page.set_library_filter('In Project') workspace_page.add_library_item_to_dataflow('foo.Foo', 'comp1') workspace_page.add_library_item_to_dataflow('foo.Foo', 'comp2') comp1 = workspace_page.get_dataflow_figure('comp1', 'top') comp2 = workspace_page.get_dataflow_figure('comp2', 'top') conn_page = workspace_page.connect(comp1, comp2) conn_page.connect_vars('comp1.b', 'comp2.a') conn_page.close() workspace_page.commit_project('added some Foos') editor_page = workspace_page.open_editor() editor_page.edit_file('foo.py', dclick=False) editor_page.add_text_to_file('#just a comment\n') # forces a save and reload of project editor_page.save_document(overwrite=True, check=False) browser.switch_to_window(workspace_window) port = workspace_page.port workspace_page = WorkspacePage.verify(browser, port) workspace_page.show_dataflow('top') time.sleep(0.5) eq(sorted(workspace_page.get_dataflow_component_names()), ['comp1', 'comp2', 'driver', 'top']) # Check if running a component is recorded (it shouldn't be). top = workspace_page.get_dataflow_figure('top') top.run() message = NotifierPage.wait(workspace_page) eq(message, 'Run complete: success') history = workspace_page.history.split('\n') eq(history[-2], 'Executing...') eq(history[-1], 'Execution complete.') workspace_page.toggle_files('foo.py') workspace_page.expand_folder('_macros') editor = workspace_page.edit_file('_macros/default') contents = editor.get_code() browser.close() browser.switch_to_window(workspace_window) for line in contents.split('\n'): if 'run' in line: raise AssertionError(line) # Check if command errors are recorded (they shouldn't be). workspace_page.do_command('print xyzzy', ack=False) # We expect 2 notifiers: command complete and error. # These will likely overlap in a manner that 'Ok' is found but # later is hidden by the second notifier. try: # We expect 2 notifiers: command complete and error. NotifierPage.wait(workspace_page, base_id='command') except WebDriverException as exc: err = str(exc) if 'Element is not clickable' in err: err = NotifierPage.wait(workspace_page) NotifierPage.wait(workspace_page, base_id='command') else: err = NotifierPage.wait(workspace_page) if err != "NameError: name 'xyzzy' is not defined": raise AssertionError('Unexpected message: %r' % err) editor = workspace_page.edit_file('_macros/default') contents = editor.get_code() browser.close() browser.switch_to_window(workspace_window) for line in contents.split('\n'): if 'xyzzy' in line: raise AssertionError(line) # Clean up. #closeout(projects_page, project_info_page, project_dict, workspace_page) closeout(project_dict, workspace_page)