def test_initialized_table_plotter(dash_duo: DashComposite) -> None: app = dash.Dash(__name__) app.css.config.serve_locally = True app.scripts.config.serve_locally = True app.config.suppress_callback_exceptions = True CACHE.init_app(app.server) webviz_settings = WebvizSettings({}, default_theme) csv_file = Path("./tests/data/example_data.csv") plot_options = dict( x="Well", y="Initial reservoir pressure (bar)", size="Average permeability (D)", facet_col="Segment", ) page = _table_plotter.TablePlotter(app, webviz_settings, csv_file, lock=True, plot_options=plot_options) app.layout = page.layout dash_duo.start_server(app) # Wait for the app to render(there is probably a better way...) # Checking that plot options are defined assert page.plot_options == plot_options assert page.lock # Checking that the selectors are hidden selector_row = dash_duo.find_element("#" + page.uuid("selector-row")) assert "display: none;" in selector_row.get_attribute("style")
def test_full_example(testdata_folder: Path, dash_duo: DashComposite, tmp_path: Path) -> None: # https://github.com/plotly/dash/issues/1164: # We are accessing a private member here which seems to be necessary due to the # aforementioned issue. Ignore the respective pylint warning. # pylint: disable=protected-access dash_duo._wd_wait = WebDriverWait( dash_duo.driver, timeout=10, ignored_exceptions=(NoSuchElementException, StaleElementReferenceException), ) # pylint: enable=protected-access # Build a portable webviz from config file appdir = tmp_path / "app" subprocess.call( # nosec ["webviz", "build", "webviz-raw-data.yml", "--portable", appdir], cwd=testdata_folder / "webviz_examples", ) # Remove Talisman file_name = appdir / "webviz_app.py" with open(file_name, "r") as file: lines = file.readlines() with open(file_name, "w") as file: for line in lines: if not line.strip("\n").startswith("Talisman"): file.write(line) # Import generated app sys.path.append(str(appdir)) # webviz_app was just created, temporarily ignore the import-outside-toplevel warning # and the import-error. # pylint: disable=import-outside-toplevel # pylint: disable=import-error from webviz_app import app # pylint: enable=import-outside-toplevel # pylint: enable=import-error # Start and test app dash_duo.start_server(app) for page in [ "inplacevolumesonebyone", "reservoirsimulationtimeseriesonebyone", "inplacevolumes", "parameterdistribution", "parametercorrelation", "reservoirsimulationtimeseries", ]: dash_duo.wait_for_element(f"#{page}").click() logs = [ log for log in dash_duo.get_logs() if "TypeError: Cannot read property 'hardwareConcurrency' of undefined" not in log["message"] ] if logs != []: raise AssertionError(page, logs)
def test_table_plotter(dash_duo: DashComposite) -> None: app = dash.Dash(__name__) app.config.suppress_callback_exceptions = True CACHE.init_app(app.server) webviz_settings = WebvizSettings({}, default_theme) csv_file = Path("./tests/data/example_data.csv") page = _table_plotter.TablePlotter(app, webviz_settings, csv_file) app.layout = page.layout dash_duo.start_server(app) # Wait for the app to render(there is probably a better way...) time.sleep(5) # Checking that no plot options are defined assert page.plot_options == {} # Check that filter is not active assert not page.use_filter # Checking that the correct plot type is initialized plot_dd = dash_duo.find_element("#" + page.uuid("plottype")) assert plot_dd.text == "scatter" # Checking that only the relevant options are shown for plot_option in page.plot_args.keys(): plot_option_dd = dash_duo.find_element("#" + page.uuid(f"div-{plot_option}")) if plot_option not in page.plots["scatter"]: assert plot_option_dd.get_attribute("style") == "display: none;" # Checking that options are initialized correctly for option in ["x", "y"]: plot_option_dd = dash_duo.find_element("#" + page.uuid(f"dropdown-{option}")) assert plot_option_dd.text == "Well"