diff --git a/.gitignore b/.gitignore index 8c494c9a..e37ef3a4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # general dev/ide files *.log +*.log.* *.vscode .idea *.DS_Store @@ -28,16 +29,21 @@ workon/ pytest.xml *.txt + +# e2e test output +test-output/ + # content # todo probably want to add a workbook and ds in /res for getting started easily *.pdf *.png *.html -# *.twbx +*.csv +*.twbx +*.tdsx # *.hyper # *.twb # *.twbr -# *.tdsx **/credentials.py # exceptions !tests/assets/ diff --git a/tests/e2e/online_tests.py b/tests/e2e/online_tests.py index 8f1d50d6..741af663 100644 --- a/tests/e2e/online_tests.py +++ b/tests/e2e/online_tests.py @@ -41,6 +41,9 @@ def _env_bool(name: str, default: bool = False) -> bool: default_project_name = "Personal Work" # not unique, has to exist already when you run random test cases +OUTPUT_DIR = "test-output" +os.makedirs(OUTPUT_DIR, exist_ok=True) + class TestAssets: @@ -210,15 +213,15 @@ def _export_view(wb_name_on_server, sheet_name, export_type, filename=None, addi def _get_workbook(server_file): command = "get" server_file = "/workbooks/" + server_file - arguments = [command, server_file, "-f", "get_workbook.twbx"] + arguments = [command, server_file, "-f", os.path.join(OUTPUT_DIR, "get_workbook.twbx")] _test_command(arguments) - os.path.exists("get_workbook.twbx") @staticmethod def _get_datasource(server_file): command = "get" server_file = "/datasources/" + server_file - arguments = [command, server_file] + out_file = os.path.join(OUTPUT_DIR, os.path.basename(server_file)) + arguments = [command, server_file, "-f", out_file] _test_command(arguments) @staticmethod @@ -443,9 +446,13 @@ def test_view_get_png_sizes(self): TabcmdCall._get_view(wb_name_on_server, sheet_name, "get_view_default_size.png") url_params = "?:size=100,200" - TabcmdCall._get_view(wb_name_on_server, sheet_name + url_params, "get_view_sized_sm.png") + TabcmdCall._get_view( + wb_name_on_server, sheet_name + url_params, os.path.join(OUTPUT_DIR, "get_view_sized_sm.png") + ) url_params = "?:size=500,700" - TabcmdCall._get_view(wb_name_on_server, sheet_name + url_params, "get_view_sized_LARGE.png") + TabcmdCall._get_view( + wb_name_on_server, sheet_name + url_params, os.path.join(OUTPUT_DIR, "get_view_sized_LARGE.png") + ) @pytest.mark.order(11) def test_view_get_csv(self): @@ -516,39 +523,39 @@ def test_export_wb_filters(self): sheet_name = TestAssets.TWBX_WITH_EXTRACT_SHEET friendly_name = wb_name_on_server + "/" + sheet_name filters = ["--filter", "Product Type=Tea", "--fullpdf", "--pagelayout", "landscape"] - TabcmdCall._export_wb(friendly_name, "filter_a_wb_to_tea_and_two_pages.pdf", filters) + TabcmdCall._export_wb(friendly_name, os.path.join(OUTPUT_DIR, "filter_a_wb_to_tea_and_two_pages.pdf"), filters) # NOTE: this test needs a visual check on the returned pdf to confirm the expected appearance @pytest.mark.order(19) def test_export_wb_pdf(self): wb_name_on_server = TestAssets.get_publishable_name(TestAssets.TWBX_FILE_WITH_EXTRACT) friendly_name = wb_name_on_server + "/" + TestAssets.TWBX_WITH_EXTRACT_SHEET - filename = "exported_wb.pdf" + filename = os.path.join(OUTPUT_DIR, "exported_wb.pdf") TabcmdCall._export_wb(friendly_name, filename) @pytest.mark.order(19) def test_export_data_csv(self): wb_name_on_server = TestAssets.get_publishable_name(TestAssets.TWBX_FILE_WITH_EXTRACT) sheet_name = TestAssets.TWBX_WITH_EXTRACT_SHEET - TabcmdCall._export_view(wb_name_on_server, sheet_name, "--csv", "exported_data.csv") + TabcmdCall._export_view(wb_name_on_server, sheet_name, "--csv", os.path.join(OUTPUT_DIR, "exported_data.csv")) @pytest.mark.order(19) def test_export_view_png(self): wb_name_on_server = TestAssets.get_publishable_name(TestAssets.TWBX_FILE_WITH_EXTRACT) sheet_name = TestAssets.TWBX_WITH_EXTRACT_SHEET - TabcmdCall._export_view(wb_name_on_server, sheet_name, "--png", "export_view.png") + TabcmdCall._export_view(wb_name_on_server, sheet_name, "--png", os.path.join(OUTPUT_DIR, "export_view.png")) @pytest.mark.order(19) def test_export_view_pdf(self): wb_name_on_server = TestAssets.get_publishable_name(TestAssets.TWBX_FILE_WITH_EXTRACT) sheet_name = TestAssets.TWBX_WITH_EXTRACT_SHEET - TabcmdCall._export_view(wb_name_on_server, sheet_name, "--pdf", "export_view_pdf.pdf") + TabcmdCall._export_view(wb_name_on_server, sheet_name, "--pdf", os.path.join(OUTPUT_DIR, "export_view_pdf.pdf")) @pytest.mark.order(19) def test_export_view_filtered(self): wb_name_on_server = TestAssets.get_publishable_name(TestAssets.TWBX_FILE_WITH_EXTRACT) sheet_name = TestAssets.TWBX_WITH_EXTRACT_SHEET - filename = "view_with_filters.pdf" + filename = os.path.join(OUTPUT_DIR, "view_with_filters.pdf") filters = ["--filter", "Product Type=Tea"] TabcmdCall._export_view(wb_name_on_server, sheet_name, "--pdf", filename, filters)