fix loading issue

This commit is contained in:
2026-01-04 18:01:23 +01:00
parent e33ce220e9
commit f254e04fc5
3 changed files with 23 additions and 8 deletions

View File

@@ -49,6 +49,7 @@ class Job(db.Model):
'in_progress': '🔄',
'passed': '',
'failed': '',
'aborted': ''
'aborted': '',
'error': '⚠️'
}
return icons.get(self.status, '')

View File

@@ -517,6 +517,10 @@ def update_job_status_internal(job):
r_data = r_resp.json()
for key, val in r_data.items():
if key.upper() == scenario.upper():
# Transform file:/// link to web link
if isinstance(val, list) and len(val) > 1 and val[1].startswith('file:///'):
val[1] = val[1].replace('file:///home/asf/testarena/', 'http://asf-server.duckdns.org:8080/results/')
results[scenario] = val
if val[0] == 'FAIL':
any_failed = True
@@ -525,16 +529,26 @@ def update_job_status_internal(job):
all_finished = False
elif t_data.get('status') == 'Aborted':
results[scenario] = ['ABORTED', '#']
all_finished = True # Or handle as aborted
all_finished = True
elif t_data.get('status') == 'Error':
results[scenario] = ['ERROR', '#']
any_failed = True
all_finished = True
else:
all_finished = False
else:
all_finished = False
else:
if results[scenario][0] == 'FAIL':
if results[scenario][0] in ['FAIL', 'ERROR']:
any_failed = True
if all_finished and task_ids:
# If any task has ERROR, the job status could be 'error' or 'failed'
# User said "mark it in the dash board as error"
has_error = any(r[0] == 'ERROR' for r in results.values())
if has_error:
job.status = 'error'
else:
job.status = 'failed' if any_failed else 'passed'
from app import db
job.completed_at = db.session.query(db.func.now()).scalar()

View File

@@ -186,7 +186,7 @@
actions.style.display = 'flex';
const btnAbort = document.getElementById('btn-abort');
if (['passed', 'failed', 'aborted'].includes(job.status)) {
if (['passed', 'failed', 'aborted', 'error'].includes(job.status)) {
btnAbort.style.display = 'none';
if (isPolling) clearInterval(pollingInterval);
} else {
@@ -244,8 +244,8 @@
let statusHtml = '⌛ Waiting';
if (result) {
const icon = result[0] === 'PASS' ? '✅' : (result[0] === 'FAIL' ? '❌' : '⚫');
const color = result[0] === 'PASS' ? 'var(--success)' : (result[0] === 'FAIL' ? 'var(--danger)' : 'var(--gray)');
const icon = result[0] === 'PASS' ? '✅' : (result[0] === 'FAIL' ? '❌' : (result[0] === 'ERROR' ? '⚠️' : '⚫'));
const color = result[0] === 'PASS' ? 'var(--success)' : (result[0] === 'FAIL' ? 'var(--danger)' : (result[0] === 'ERROR' ? 'var(--warning)' : 'var(--gray)'));
statusHtml = `<a href="${result[1]}" target="_blank" style="text-decoration: none; color: ${color}; font-weight: 600;">${icon} ${result[0]}</a>`;
} else if (job.status === 'in_progress') {
statusHtml = '🔄 Running';
@@ -277,7 +277,7 @@
if (logElement) logElement.scrollTop = logElement.scrollHeight;
}
if (!['passed', 'failed', 'aborted'].includes(job.status)) {
if (!['passed', 'failed', 'aborted', 'error'].includes(job.status)) {
fetch(`/jobs/${jobId}/status`)
.then(r => r.json())
.then(data => {