@@ -47,7 +47,8 @@ def test_kdma_sliders_interaction(page, real_data_test_server):
4747 # Set ADM type to enable KDMA sliders
4848 adm_select = page .locator (".table-adm-select" ).first
4949 adm_select .select_option ("pipeline_baseline" )
50- page .wait_for_timeout (1000 )
50+ # Wait for UI to update after ADM selection
51+ page .wait_for_load_state ("networkidle" )
5152
5253 # Find KDMA sliders in table
5354 sliders = page .locator (".table-kdma-value-slider" ).all ()
@@ -237,3 +238,87 @@ def test_real_data_comprehensive_loading(page, real_data_test_server):
237238 ]
238239
239240 assert len (filtered_errors ) == 0 , f"Found JavaScript errors: { filtered_errors } "
241+
242+
243+ def test_kdma_combination_default_value_issue (page , real_data_test_server ):
244+ """Test the KDMA combination issue where adding a second KDMA defaults to 0.5 instead of valid value."""
245+ page .goto (real_data_test_server )
246+
247+ # Wait for table to load
248+ page .wait_for_selector (".comparison-table" , timeout = 10000 )
249+ page .wait_for_function (
250+ "document.querySelectorAll('.table-adm-select').length > 0" , timeout = 10000
251+ )
252+
253+ # Select pipeline_baseline ADM to enable KDMA functionality
254+ adm_select = page .locator (".table-adm-select" ).first
255+ adm_select .select_option ("pipeline_baseline" )
256+ # Wait for UI to update after ADM selection
257+ page .wait_for_load_state ("networkidle" )
258+
259+ # Select June2025-AF-train scenario to get multi-KDMA support
260+ scenario_select = page .locator (".table-scenario-select" ).first
261+
262+ # Check what scenarios are available
263+ scenario_options = scenario_select .locator ("option" ).all ()
264+ scenario_values = [opt .get_attribute ("value" ) for opt in scenario_options if opt .get_attribute ("value" )]
265+ print (f"Available scenarios: { scenario_values } " )
266+
267+ # Find a June2025-AF-train scenario
268+ june_scenarios = [s for s in scenario_values if "June2025-AF-train" in s ]
269+
270+ scenario_select .select_option (june_scenarios [0 ])
271+ # Wait for scenario selection to take effect
272+ page .wait_for_load_state ("networkidle" )
273+
274+
275+ # Check initial KDMA sliders - should have affiliation already
276+ kdma_sliders = page .locator (".table-kdma-value-slider" )
277+ initial_count = kdma_sliders .count ()
278+
279+ # Should have at least one KDMA slider initially
280+ assert initial_count > 0 , "Should have initial KDMA slider"
281+
282+ # Look for "Add KDMA" button
283+ add_kdma_button = page .locator (".add-kdma-btn" )
284+
285+ # Click Add KDMA button
286+ add_kdma_button .click ()
287+
288+ # Wait for new KDMA slider to be added by checking for count increase
289+ page .wait_for_function (
290+ f"document.querySelectorAll('.table-kdma-value-slider').length > { initial_count } " ,
291+ timeout = 5000
292+ )
293+
294+ # Check that a new KDMA slider was added
295+ updated_kdma_sliders = page .locator (".table-kdma-value-slider" )
296+ updated_count = updated_kdma_sliders .count ()
297+
298+ assert updated_count > initial_count , "Should have added a new KDMA slider"
299+
300+ # Check the value of the new slider
301+ new_sliders = updated_kdma_sliders .all ()
302+ if len (new_sliders ) > 1 :
303+ # Get the last slider (newly added)
304+ new_slider = new_sliders [- 1 ]
305+ new_value = new_slider .input_value ()
306+
307+ # This is the bug: it defaults to 0.5 instead of a valid value
308+ # For pipeline_baseline with affiliation+merit, valid combinations are only 0.0 and 1.0
309+ # So 0.5 should not be the default - it should be 0.0 or 1.0
310+ valid_values = ["0.0" , "1.0" ]
311+
312+ # This assertion should fail with current code, proving the bug exists
313+ # Accept both integer and decimal formats
314+ valid_values = ["0.0" , "1.0" , "0" , "1" ]
315+ assert new_value in valid_values , f"New KDMA slider should default to valid value (0.0 or 1.0), but got { new_value } "
316+
317+ # Also check that the dropdowns don't go blank
318+ adm_select_value = adm_select .input_value ()
319+ assert adm_select_value != "" , "ADM select should not go blank after adding KDMA"
320+
321+ scenario_select_value = scenario_select .input_value ()
322+ assert scenario_select_value != "" , "Scenario select should not go blank after adding KDMA"
323+ assert "June2025-AF-train" in scenario_select_value , "Should still have June2025-AF-train scenario selected"
324+
0 commit comments