TIF_NGANJUK_E41222052/tests/materi/test_materi_kinesthetic.py

142 lines
4.9 KiB
Python

import pytest
from pages.live_coding_page import LiveCodingPage
class TestKinesthetic:
def test_live_coding_page_loaded(self,driver,login_as_user_belum_kuesioner):
driver.get("https://hypermedialearning.sanggadewa.my.id/materi/kinesthetic/1")
page = LiveCodingPage(driver)
assert page.is_page_loaded()
assert page.editor_is_visible()
assert "Hasil Output" in page.get_expected_output_text()
def test_submit_without_completing_code(self,driver,login_as_user_belum_kuesioner):
driver.get("https://hypermedialearning.sanggadewa.my.id/materi/kinesthetic/1")
page = LiveCodingPage(driver)
page.submit_code()
result = page.get_result_message()
assert "Kompilasi Gagal" in result
"""assert "Jawaban Salah" in result
assert "Seharusnya" in result"""
def test_submit_with_wrong_code(self,driver,login_as_user_belum_kuesioner):
driver.get("https://hypermedialearning.sanggadewa.my.id/materi/kinesthetic/1")
page = LiveCodingPage(driver)
page.append_code("System.out.println(\"SALAH\");")
page.submit_code()
result = page.get_result_message()
assert "Kompilasi Gagal" in result
"""assert "Jawaban Salah" in result
assert "Seharusnya" in result"""
def test_submit_with_correct_code(self,driver,login_as_user_belum_kuesioner):
driver.get("https://hypermedialearning.sanggadewa.my.id/materi/kinesthetic/1")
page = LiveCodingPage(driver)
page.append_code(
"System.out.println(m1.getNama() + \" | IPK: \" + m1.getIpk() + \"\\n\" + m2.getNama() + \" | IPK: \" + m2.getIpk());")
page.submit_code()
result = page.get_result_message()
assert "Jawaban Benar" in result
def test_default_code_is_displayed(self,driver,login_as_user_belum_kuesioner):
driver.get("https://hypermedialearning.sanggadewa.my.id/materi/kinesthetic/1")
page = LiveCodingPage(driver)
code = page.get_editor_value()
assert code.strip() != "", \
"FAIL: Kode bawaan materi tidak tampil pada editor"
def test_popup_can_be_closed(self,driver,login_as_user_belum_kuesioner):
driver.get("https://hypermedialearning.sanggadewa.my.id/materi/kinesthetic/1")
page = LiveCodingPage(driver)
page.append_code("\nprint('test')")
page.submit_code()
page.wait_popup_visible()
assert page.is_popup_visible()
page.close_result_modal()
page.wait_popup_invisible()
assert not page.is_popup_visible(), \
"FAIL: Popup evaluasi tidak tertutup"
def test_previous_button_on_first_page(self,driver,login_as_user_belum_kuesioner):
driver.get("https://hypermedialearning.sanggadewa.my.id/materi/kinesthetic/1")
page = LiveCodingPage(driver)
initial_url = page.get_current_url()
page.click_previous()
current_url = page.get_current_url()
assert current_url == initial_url, (
"FAIL: Tombol Sebelumnya pada halaman pertama "
"seharusnya tidak berpindah halaman"
)
assert not page.is_404_page(), (
"FAIL: Tombol Sebelumnya menyebabkan halaman 404"
)
def test_next_button_on_first_page(self,driver,login_as_user_belum_kuesioner):
driver.get("https://hypermedialearning.sanggadewa.my.id/materi/kinesthetic/1")
page = LiveCodingPage(driver)
initial_url = page.get_current_url()
page.click_next()
current_url = page.get_current_url()
assert current_url != initial_url, (
"FAIL: Tombol Selanjutnya tidak berpindah ke halaman berikutnya"
)
assert not page.is_404_page(), (
"FAIL: Tombol Selanjutnya menyebabkan halaman 404"
)
def test_navigation_without_submit_shows_validation(self,driver,login_as_user_belum_kuesioner):
driver.get("https://hypermedialearning.sanggadewa.my.id/materi/kinesthetic/1")
page = LiveCodingPage(driver)
"""
User berpindah halaman sebelum submit kode
Expected: muncul notifikasi validasi
"""
initial_url = page.get_current_url()
page.append_code("\nSystem.out.println('Belum submit');")
page.click_other_menu()
# ===== CASE 1: JS ALERT =====
alert_text = page.is_confirm_alert_present()
if alert_text:
assert (
"yakin" in alert_text.lower()
or "belum" in alert_text.lower()
), "FAIL: Teks alert tidak sesuai validasi"
return
# ===== CASE 2: HTML MODAL =====
assert page.is_confirm_modal_visible(), (
"FAIL: Tidak ada alert atau modal validasi saat berpindah halaman"
)
# Pastikan belum pindah halaman
assert page.get_current_url() == initial_url, (
"FAIL: Sistem berpindah halaman tanpa konfirmasi"
)