use crate::utils::browser::BrowserHelpers;
use playwright::api::Page;
use std::error::Error;
pub async fn test_entity_profile_flow(page: &Page, username: &str) -> Result<(), Box<dyn Error>> {
let expected_title = format!("{} - ayb", username);
assert_eq!(page.title().await?, expected_title);
BrowserHelpers::screenshot_compare(&page, "entity_dashboard_reference", &[]).await?;
page.click_builder("button:has-text('Edit profile')")
.timeout(5000.0)
.click()
.await?;
BrowserHelpers::screenshot_compare(&page, "profile_edit_mode", &[]).await?;
page.fill_builder("input[name='display_name']", "Entity 0")
.timeout(1000.0)
.fill()
.await?;
page.fill_builder("input[name='description']", "Entity 0 NEW description")
.timeout(1000.0)
.fill()
.await?;
page.fill_builder("input[name='organization']", "Entity 0 organization")
.timeout(1000.0)
.fill()
.await?;
page.fill_builder("input[name='location']", "NYC")
.timeout(1000.0)
.fill()
.await?;
page.click_builder("button:has-text('Add link')")
.timeout(2000.0)
.click()
.await?;
page.fill_builder("input[name='links[]']", "http://ayb.host/")
.timeout(1000.0)
.fill()
.await?;
page.click_builder("button:has-text('Add link')")
.timeout(2000.0)
.click()
.await?;
page.fill_builder(
"div.link-input-group:nth-child(2) input[name='links[]']",
"http://ayb2.host/",
)
.timeout(3000.0)
.fill()
.await?;
BrowserHelpers::screenshot_compare(&page, "profile_form_filled", &[]).await?;
page.click_builder("button:has-text('Save')")
.timeout(5000.0)
.click()
.await?;
BrowserHelpers::screenshot_compare(&page, "profile_saved", &[]).await?;
page.reload_builder().timeout(5000.0).reload().await?;
BrowserHelpers::screenshot_compare(&page, "profile_after_reload", &[]).await?;
let page_text = page.inner_text("body", None).await?;
assert!(
page_text.contains("Entity 0"),
"Display name should be visible after reload"
);
assert!(
page_text.contains("Entity 0 NEW description"),
"Description should be visible after reload"
);
assert!(
page_text.contains("Entity 0 organization"),
"Organization should be visible after reload"
);
assert!(
page_text.contains("NYC"),
"Location should be visible after reload"
);
assert!(
page_text.contains("http://ayb.host") || page_text.contains("ayb.host"),
"First link should be visible after reload"
);
assert!(
page_text.contains("http://ayb2.host") || page_text.contains("ayb2.host"),
"Second link should be visible after reload"
);
BrowserHelpers::screenshot_compare(&page, "profile_verification_complete", &[]).await?;
Ok(())
}