0
0
Testing Fundamentalstesting~15 mins

Integration testing in Testing Fundamentals - Build an Automation Script

Choose your learning style9 modes available
Verify integration between User Login and Dashboard modules
Preconditions (2)
Step 1: Open the application login page
Step 2: Enter 'testuser' in the username field
Step 3: Enter 'Test@1234' in the password field
Step 4: Click the 'Login' button
Step 5: Wait for the dashboard page to load
Step 6: Verify that the dashboard displays the welcome message 'Welcome, testuser!'
✅ Expected Result: User successfully logs in and the dashboard shows the correct welcome message confirming integration between login and dashboard modules
Automation Requirements - Selenium with Python
Assertions Needed:
Verify current URL is the dashboard URL after login
Verify welcome message text matches 'Welcome, testuser!'
Best Practices:
Use explicit waits to wait for elements to be visible or clickable
Use Page Object Model to separate page interactions
Use clear and maintainable locators (id or name preferred)
Include setup and teardown methods to open and close browser
Automated Solution
Testing Fundamentals
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import unittest

class LoginPage:
    def __init__(self, driver):
        self.driver = driver
        self.username_input = (By.ID, 'username')
        self.password_input = (By.ID, 'password')
        self.login_button = (By.ID, 'loginBtn')

    def enter_username(self, username):
        WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(self.username_input)).send_keys(username)

    def enter_password(self, password):
        WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(self.password_input)).send_keys(password)

    def click_login(self):
        WebDriverWait(self.driver, 10).until(EC.element_to_be_clickable(self.login_button)).click()

class DashboardPage:
    def __init__(self, driver):
        self.driver = driver
        self.welcome_message = (By.ID, 'welcomeMsg')

    def get_welcome_text(self):
        return WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(self.welcome_message)).text

class TestIntegrationLoginDashboard(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.get('https://example.com/login')

    def test_login_and_dashboard_integration(self):
        login_page = LoginPage(self.driver)
        login_page.enter_username('testuser')
        login_page.enter_password('Test@1234')
        login_page.click_login()

        # Verify URL changed to dashboard
        WebDriverWait(self.driver, 10).until(EC.url_contains('/dashboard'))
        self.assertIn('/dashboard', self.driver.current_url)

        dashboard_page = DashboardPage(self.driver)
        welcome_text = dashboard_page.get_welcome_text()
        self.assertEqual(welcome_text, 'Welcome, testuser!')

    def tearDown(self):
        self.driver.quit()

if __name__ == '__main__':
    unittest.main()

This test uses Selenium with Python's unittest framework to automate the integration test.

We define two page objects: LoginPage and DashboardPage. This keeps code organized and easy to maintain.

In test_login_and_dashboard_integration, we open the login page, enter username and password, and click login.

We then wait until the URL contains '/dashboard' to confirm navigation.

Finally, we verify the welcome message text matches the expected string.

Explicit waits ensure elements are ready before interacting, avoiding flaky tests.

Setup and teardown methods open and close the browser cleanly for each test run.

Common Mistakes - 3 Pitfalls
{'mistake': 'Using time.sleep() instead of explicit waits', 'why_bad': 'Fixed waits can slow tests and cause failures if elements load slower or faster than expected.', 'correct_approach': "Use Selenium's explicit waits like WebDriverWait with expected conditions to wait only as long as needed."}
Using brittle XPath locators that break easily
Mixing page interaction code directly in test methods
Bonus Challenge

Now add data-driven testing with 3 different user credentials to verify login and dashboard integration for multiple users.

Show Hint