diff --git a/asf-cloud-server/testarena_1/app/routes/jobs.py b/asf-cloud-server/testarena_1/app/routes/jobs.py index 20638d2..a063213 100644 --- a/asf-cloud-server/testarena_1/app/routes/jobs.py +++ b/asf-cloud-server/testarena_1/app/routes/jobs.py @@ -252,6 +252,29 @@ def submit_step1(): 'output': f'Exception: {str(e)}' }) +@jobs_bp.route('/submit/step2', methods=['POST']) +@login_required +def submit_step2(): + branch_name = request.form.get('branch_name') + scenario_map_json = request.form.get('scenario_map') + selected_scenarios_json = request.form.get('selected_scenarios') + + try: + scenario_map = json.loads(scenario_map_json) if scenario_map_json else {} + selected_scenarios = json.loads(selected_scenarios_json) if selected_scenarios_json else [] + except json.JSONDecodeError: + flash('Invalid scenario data', 'error') + return redirect(url_for('jobs.submit')) + + if not selected_scenarios: + flash('Please select at least one scenario', 'error') + return redirect(url_for('jobs.submit')) + + return render_template('jobs/submit_step3.html', + branch_name=branch_name, + scenarios=selected_scenarios, + scenario_map=scenario_map) + @jobs_bp.route('/submit/step2-validated', methods=['POST']) @login_required def submit_step2_validated(): @@ -312,28 +335,45 @@ def submit_step2(): @login_required def submit_step3(): branch_name = request.form.get('branch_name') - scenarios = request.form.get('scenarios') + scenarios_json = request.form.get('scenarios') + scenario_map_json = request.form.get('scenario_map') environment = request.form.get('environment') + try: + scenarios = json.loads(scenarios_json) if scenarios_json else [] + scenario_map = json.loads(scenario_map_json) if scenario_map_json else {} + except json.JSONDecodeError: + flash('Invalid scenario data', 'error') + return redirect(url_for('jobs.submit')) + return render_template('jobs/submit_step4.html', branch_name=branch_name, scenarios=scenarios, + scenario_map=scenario_map, environment=environment) @jobs_bp.route('/submit/final', methods=['POST']) @login_required def submit_final(): branch_name = request.form.get('branch_name') - scenarios = request.form.get('scenarios') + scenarios_json = request.form.get('scenarios') + scenario_map_json = request.form.get('scenario_map') environment = request.form.get('environment') test_mode = request.form.get('test_mode') keep_devbenches = request.form.get('keep_devbenches') == 'on' reuse_results = request.form.get('reuse_results') == 'on' + try: + scenarios = json.loads(scenarios_json) if scenarios_json else [] + scenario_map = json.loads(scenario_map_json) if scenario_map_json else {} + except json.JSONDecodeError: + flash('Invalid scenario data', 'error') + return redirect(url_for('jobs.submit')) + job = Job( user_id=current_user.id, branch_name=branch_name, - scenarios=scenarios, + scenarios=json.dumps(scenarios), # Store as JSON string environment=environment, test_mode=test_mode, keep_devbenches=keep_devbenches, @@ -344,7 +384,7 @@ def submit_final(): db.session.add(job) db.session.commit() - # TODO: Start test execution in background + # TODO: Start test execution in background using scenario_map flash('Test job submitted successfully', 'success') return redirect(url_for('dashboard.index')) diff --git a/asf-cloud-server/testarena_1/app/templates/jobs/submit_step3.html b/asf-cloud-server/testarena_1/app/templates/jobs/submit_step3.html index a921d59..48165ec 100644 --- a/asf-cloud-server/testarena_1/app/templates/jobs/submit_step3.html +++ b/asf-cloud-server/testarena_1/app/templates/jobs/submit_step3.html @@ -29,9 +29,23 @@ +