|
|
|
import pandas as pd |
|
import streamlit as st |
|
import csv |
|
import io |
|
import matplotlib.pyplot as plt |
|
import numpy as np |
|
from pre import preprocess_uploaded_file |
|
|
|
|
|
def double_main(uploaded_file1,uploaded_file2): |
|
|
|
|
|
if uploaded_file1 is not None and uploaded_file2 is not None: |
|
|
|
|
|
data_1 = preprocess_uploaded_file(uploaded_file1) |
|
data_2 = preprocess_uploaded_file(uploaded_file2) |
|
|
|
|
|
if data_1['Start datetime'].min() < data_2['Start datetime'].min(): |
|
older_df = data_1 |
|
newer_df = data_2 |
|
else: |
|
older_df = data_2 |
|
newer_df = data_1 |
|
|
|
|
|
older_df['Time spent'] = pd.to_datetime(older_df['Time spent'], unit='s').dt.strftime('%M:%S') |
|
newer_df['Time spent'] = pd.to_datetime(newer_df['Time spent'], unit='s').dt.strftime('%M:%S') |
|
|
|
|
|
older_datetime = older_df['Start datetime'].min() |
|
newer_datetime = newer_df['Start datetime'].min() |
|
|
|
|
|
st.write(f"The older csv started on {older_datetime}") |
|
st.write(f"The newer csv started on {newer_datetime}") |
|
|
|
|
|
merged_df = pd.merge(older_df, newer_df, on=['Functional area', 'Scenario name'], suffixes=('_old', '_new')) |
|
|
|
|
|
fail_to_fail_scenarios = merged_df[(merged_df['Status_old'] == 'FAILED') & (merged_df['Status_new'] == 'FAILED')] |
|
|
|
|
|
st.markdown("### Consistent Failures(previously failing, now failing)") |
|
|
|
|
|
fail_count = len(fail_to_fail_scenarios) |
|
st.write(f"Failing scenarios Count: {fail_count}") |
|
|
|
|
|
columns_to_display1 = ['Functional area', 'Scenario name', 'Error message_old', 'Error message_new'] |
|
st.write(fail_to_fail_scenarios[columns_to_display1]) |
|
|
|
|
|
pass_to_fail_scenarios = merged_df[(merged_df['Status_old'] == 'PASSED') & (merged_df['Status_new'] == 'FAILED')] |
|
|
|
|
|
st.markdown("### New Failures(previously passing, now failing)") |
|
|
|
|
|
pass_fail_count = len(pass_to_fail_scenarios) |
|
st.write(f"Failing scenarios Count: {pass_fail_count}") |
|
|
|
|
|
columns_to_display2 = ['Functional area', 'Scenario name', 'Error message_new', 'Time spent_old','Time spent_new',] |
|
st.write(pass_to_fail_scenarios[columns_to_display2]) |
|
|
|
|
|
fail_to_pass_scenarios = merged_df[(merged_df['Status_old'] == 'FAILED') & (merged_df['Status_new'] == 'PASSED')] |
|
|
|
|
|
st.markdown("### New Passes(previously failing, now passing)") |
|
|
|
|
|
pass_count = len(fail_to_pass_scenarios) |
|
st.write(f"Passing scenarios Count: {pass_count}") |
|
|
|
|
|
columns_to_display3 = ['Functional area', 'Scenario name', 'Error message_old', 'Time spent_old','Time spent_new',] |
|
st.write(fail_to_pass_scenarios[columns_to_display3]) |
|
|
|
|
|
|
|
excel_writer = pd.ExcelWriter('comparison_results.xlsx', engine='xlsxwriter') |
|
|
|
|
|
fail_to_fail_scenarios.loc[:, columns_to_display1].to_excel(excel_writer, sheet_name='Consistent Failures', index=False) |
|
pass_to_fail_scenarios.loc[:, columns_to_display2].to_excel(excel_writer, sheet_name='New Failures', index=False) |
|
fail_to_pass_scenarios.loc[:, columns_to_display3].to_excel(excel_writer, sheet_name='New Passes', index=False) |
|
|
|
|
|
|
|
|
|
csv_version_sheet = excel_writer.book.add_worksheet('CSV Details') |
|
|
|
|
|
csv_version_sheet.write('A1', 'Older CSV:') |
|
csv_version_sheet.write('B1', 'Newer CSV:') |
|
csv_version_sheet.write('A2', older_df['Start datetime'].min().strftime('%Y-%m-%d %H:%M:%S')) |
|
csv_version_sheet.write('B2', newer_df['Start datetime'].min().strftime('%Y-%m-%d %H:%M:%S')) |
|
|
|
|
|
excel_writer.save() |
|
|
|
|
|
st.markdown("### Download Excel Report") |
|
st.markdown("Click below to download the comparison results in Excel format:") |
|
with open('comparison_results.xlsx', 'rb') as excel_file: |
|
excel_bytes = excel_file.read() |
|
st.download_button(label='Download Excel Report', data=excel_bytes, file_name='comparison_results.xlsx', key='excel-download') |