#!/usr/bin/env php =============================================== AEI Hawaii Scheduler - QA Test Suite =============================================== Base URL: http://localhost/dev_scheduler/SCHEDULER/ Date: 2026-02-28 08:39:53 =============================================== === Running ProposalTest === Running testProposalIndexLoads... FAIL Running testProposalRequiresAuth... PASS Running testProposalBasicFormLoads... FAIL Running testProposalCostFormLoads... FAIL Running testMockPVProposalGeneration... PASS Running testBatchGeneration... PASS Running testPriceQuoteLoads... FAIL Running testProposalDetailsLoads... FAIL Running testProposalSearchByName... FAIL Running testProposalFilterByDate... FAIL Running testProposalFilterByOahu... FAIL Running testProposalFilterByMaui... FAIL Running testPdfCreationEndpoint... PASS Running testCommissionEndpoint... PASS Running testCustomerCheckEndpoint... PASS Running testMockDataJsonExport... FAIL Running testMockDataLocationAccess... PASS === Running AssignTest === Running testMyAssignmentsLoads... FAIL Running testAssignmentsRequireAuth... PASS Running testDateRangeFilter... FAIL Running testStatusFilter... FAIL Running testSalespersonFilter... FAIL Running testPagination... FAIL Running testLimitCap... FAIL Running testAllLimit... FAIL Running testCombinedFilters... FAIL Running testResponseStructure... PASS === Running ACProposalTest === Running testACProposalIndexLoads... FAIL Running testACProposalRequiresAuth... PASS Running testACProposalBasicFormLoads... FAIL Running testMockACProposalGeneration... PASS Running testACDateFilter... FAIL Running testACCityFilter... FAIL Running testACSalespersonFilter... FAIL Running testACLocationOahu... FAIL Running testACLocationMaui... FAIL Running testACNameSearch... FAIL Running testMockACZoneData... PASS === Running SWHProposalTest === Running testSWHProposalIndexLoads... FAIL Running testSWHProposalBasicFormLoads... FAIL Running testMockSWHProposalGeneration... PASS Running testSWHDateFilter... FAIL Running testSWHCityFilter... FAIL Running testSWHSalespersonFilter... FAIL Running testSWHStatusFilter... FAIL Running testSWHNameSearch... FAIL Running testSWHLimitParameter... FAIL Running testMockSWHTankSizes... PASS Running testMockSWHCollectorTypes... PASS === Running PageAccessibilityTest === Running testLoginPageAccessible... FAIL Running testNoPriorityPagesReturn500... PASS Running testProtectedPagesRedirect... FAIL Running testResponseTimes... PASS Running testAllMappedControllers... PASS Running testAjaxEndpointResponds... PASS Running testAdminPageStructure... PASS Running testNoPhpErrorsInResponses... PASS Running testAssetsLinked... PASS Running testContentTypeHeaders... PASS Running testNotFoundHandling... PASS === Running AdminPagesTest === Running testCoreAdminPagesRespond... FAIL Running testAdminConfigRequiresAuth... FAIL Running testAdminUsersPage... FAIL Running testSuperadminPagesNoServerErrors... PASS Running testInventoryPages... FAIL Running testJobPages... FAIL Running testReportPages... FAIL Running testProposalVariablePages... PASS Running testLeadPages... FAIL Running testCustomerPages... PASS Running testExportPages... PASS Running testAdminLinkMapperPageCount... PASS === Running MockServicesTest === Running testMockEmailServiceLogs... PASS Running testMockEmailWithAttachments... PASS Running testPVWattsMockReturnsValidJson... PASS Running testPVWattsMockHasRequiredFields... PASS Running testPVWattsScalesWithSystemSize... PASS Running testGeocodingMockReturnsCoordinates... PASS Running testGeocodingRecognizesHawaiiCities... PASS Running testReverseGeocoding... PASS Running testOsTicketMockCreatesTicket... PASS Running testOsTicketMockClosesTicket... PASS Running testPermitAPIMock... PASS Running testPermitStatusIsConsistent... PASS Running testGeoPluginMock... PASS Running testMockFileGetContentsWrapper... PASS Running testMockServicesAreFlagged... PASS Running testMockServicesEnabled... PASS Running testLogDirectoryExists... PASS === Running DayviewTest === Running testDayviewLoadsAuthenticated... FAIL Running testDayviewContainsScheduleGrid... FAIL Running testDayviewNoPhpErrors... FAIL Running testDayviewNoDatabaseErrors... FAIL Running testDayviewWithTodayDate... FAIL Running testDayviewWithPastDate... FAIL Running testDayviewWithFutureDate... FAIL Running testDayviewOahuLocation... FAIL Running testDayviewMauiLocation... FAIL Running testDayviewResponseTime... FAIL Running testDayviewContainsTeamsSidebar... FAIL Running testDayviewRequiresAuth... FAIL Running testDayviewContainsJobStructures... FAIL Running testDayviewNoRawDateFormat... FAIL === Running EnhancementRegressionTest === Running testENH001_AdminCalendarLoads... FAIL Running testENH001_NoDateFormatInOutput... FAIL Running testENH001_AdminContainsUserInitials... FAIL Running testENH003_CacheControlHeaders... FAIL Running testENH003_ScriptDeferAttributes... FAIL Running testENH008_LeadPageLoads... FAIL Running testENH014_MyJobsLoads... FAIL Running testENH014_UnscheduledJobsLoads... FAIL Running testENH014_CompleteJobsLoads... FAIL Running testENH014_AllCompleteJobsLoads... FAIL Running testENH014_MyJobsContainsContent... FAIL Running testENH014_MyJobsResponseTime... PASS Running testENH016_AssignmentsLoads... FAIL Running testENH016_AssignmentsNoErrors... FAIL Running testENH020_CostListPriceLoads... FAIL Running testENH020_ReviewBgShowThumbLoads... FAIL Running testENH020_ScLabourReportLoads... FAIL Running testENH020_NoScarpdataLinks... PASS Running testCustomerPageLoads... FAIL Running testTicketPageLoads... FAIL Running testProposalIndexLoads... FAIL Running testPvJobsLoads... FAIL Running testSwhJobsLoads... FAIL === Running ConfigPagesTest === Running testConfigPageLoads... FAIL Running testConfigPageNoErrors... FAIL Running testConfigNoScarpdataLinks... FAIL Running testAdminUsersLoads... FAIL Running testAdminUsersNoErrors... FAIL Running testInventoryCostListPriceLoads... FAIL Running testInventoryCostListPriceNoErrors... FAIL Running testConfigPageHasContent... FAIL Running testConfigAccessForSuperuser... FAIL === Running PhotoGalleryTest === Running testPvJobsListLoads... FAIL Running testJobDetailLoads... FAIL Running testJobDetailHasPhotoMarkup... FAIL Running testJobDetailNoErrors... FAIL Running testLightboxJsIncluded... FAIL Running testPhotoGalleryThumbnailGrid... FAIL Running testPvJobsListNoErrors... FAIL === Running NavTabsTest === Running testNavTabsPartialExists... PASS Running testPvJobDetailHasNavTabs... PASS Running testAcJobDetailHasNavTabs... PASS Running testSwhJobDetailHasNavTabs... PASS Running testNavTabLinksCorrect... FAIL Running testNavTabsConsistentStructure... PASS Running testJobDetailPagesNoErrors... PASS === Running ModernizationBaselineTest === Running testLoginFlowRedirectsCorrectly... FAIL Running testInvalidLoginRedirects... PASS Running testBaselineAdminCalendar... FAIL Running testBaselineDayview... FAIL Running testBaselineProposal... FAIL Running testBaselineCustomer... FAIL Running testBaselinePvJobs... FAIL Running testBaselineAcProposal... FAIL Running testBaselineSwhProposal... FAIL Running testBaselineTicket... FAIL Running testBaselineAssignments... FAIL Running testBaselineConfig... FAIL Running testBaselineNoPHPErrors... PASS Running testBaselineResponseContentStability... FAIL Running testBaselineRouteSmokeTest... PASS Running testBaselineLoginPagePublic... FAIL === Running PdfGenerationTest === Running testWkhtmltopdfInstalled... PASS Running testWkhtmltopdfVersion... PASS Running testMpdfLibraryExists... PASS Running testFpdfLibraryExists... PASS Running testFpdiLibraryExists... PASS Running testPdftempDirectoryExists... PASS Running testPdfFormTemplatesExist... PASS Running testWkhtmltopdfFooterExists... PASS Running testDetectHardcodedWkhtmltopdfPaths... PASS Running testDetectHardcodedMpdfPaths... PASS Running testDetectHardcodedFpdfPaths... PASS Running testProposalpdfControllerAccessible... PASS Running testAcpdfControllerAccessible... PASS Running testServicesPdfControllerAccessible... PASS Running testAdminpartpdfControllerAccessible... PASS Running testNempdfControllerAccessible... PASS Running testScpdfControllerAccessible... PASS Running testPvProposalPdfGeneration... PASS Running testAcProposalPdfGeneration... PASS Running testServicePdfGeneration... PASS Running testAdminPartsPdfGeneration... PASS Running testMpdfLibraryLoadable... PASS Running testFpdfLibraryLoadable... PASS Running testProposalPdfViewsExist... PASS Running testAcPdfViewsExist... PASS Running testAdminPartPdfViewsExist... PASS Running testWkhtmltopdfCanGeneratePdf... PASS Running testProductionPathSymlinks... PASS Running testPdfControllersSyntaxValid... PASS Running testPdfEndpointInventory... PASS === Running WritableDirectoriesTest === Running testAllWritableDirectoriesExist... PASS Running testAllDirectoriesWritable... PASS Running testCanWriteToAllDirectories... PASS Running testPdfDirectoriesWritable... PASS Running testUploadDirectoriesWritable... PASS Running testEmailDirectoriesWritable... PASS Running testLogDirectoriesWritable... PASS Running testDirectoryPermissionValues... PASS ======================================== TEST RESULTS ======================================== Passed: 362 Failed: 122 Errors: 0 Total: 484 Time: 1.05s ======================================== Details: [FAIL] Proposal index should return 200 or redirect [FAIL] Proposal basic form should load or redirect [FAIL] Proposal cost form should load or redirect [FAIL] Price quote page should load or redirect [FAIL] Proposal details should load or redirect [FAIL] Search should work or redirect [FAIL] Date filter should work or redirect [FAIL] Location filter (Oahu) should work or redirect [FAIL] Location filter (Maui) should work or redirect [FAIL] JSON export file should be created [FAIL] My assignments page should load or redirect [FAIL] Date range filter should work [FAIL] Status filter should work [FAIL] Salesperson filter should work [FAIL] Pagination should work [FAIL] Limit cap should work [FAIL] All limit should work [FAIL] Combined filters should work [FAIL] AC Proposal index should load or redirect [FAIL] AC Proposal basic form should load or redirect [FAIL] Date filter should work [FAIL] City filter should work [FAIL] Salesperson filter should work [FAIL] Oahu location filter should work [FAIL] Maui location filter should work [FAIL] Name search should work [FAIL] SWH Proposal index should load or redirect [FAIL] SWH Proposal basic form should load or redirect [FAIL] Date filter should work [FAIL] City filter should work [FAIL] Salesperson filter should work [FAIL] Status filter should work [FAIL] Name search should work [FAIL] Limit parameter should work [FAIL] Login page should return 200 [FAIL] Admin Dashboard should return 200 or 302 [FAIL] PV Proposals List should return 200 or 302 [FAIL] AC Proposals List should return 200 or 302 [FAIL] Roof Proposals List should return 200 or 302 [FAIL] SAF Proposals List should return 200 or 302 [FAIL] DRW Proposals List should return 200 or 302 [FAIL] Commercial PV Proposals should return 200 or 302 [FAIL] PV Jobs should return 200 or 302 [FAIL] SWH Jobs should return 200 or 302 [FAIL] My Assignments should return 200 or 302 [FAIL] Premium Job Schedule should return 200 or 302 [FAIL] Service Plan Schedule should return 200 or 302 [FAIL] Customers should return 200 or 302 [FAIL] Tickets should return 200 or 302 [FAIL] E-Sign should return 200 or 302 [FAIL] All 0/5 core admin pages respond [FAIL] Admin config should require authentication (302 or login form) [FAIL] Admin users page should respond (200 or 302) [FAIL] At least 3/4 inventory pages respond (got 0) [FAIL] All job pages respond (0/4) [FAIL] At least 4/5 report pages respond (got 0) [FAIL] Lead page should respond [FAIL] Dayview should return 200 for authenticated superadmin [FAIL] Dayview did not return 200 [FAIL] Dayview did not return 200 [FAIL] Dayview did not return 200 [FAIL] Dayview with today date should return 200 [FAIL] Dayview with past date should return 200 [FAIL] Dayview with future date should return 200 [FAIL] Dayview with Oahu filter should return 200 or 302 [FAIL] Dayview with Maui filter should return 200 or 302 [FAIL] Dayview should return 200 [FAIL] Dayview did not return 200 [FAIL] Dayview should redirect or show login when not authenticated [FAIL] Dayview did not return 200 [FAIL] Dayview did not return 200 [FAIL] SCH-001: Admin calendar should return 200 [FAIL] Admin did not return 200 [FAIL] Admin did not return 200 [FAIL] Admin did not return 200 [FAIL] Admin did not return 200 [FAIL] SCH-008: Lead page should return 200 or 302 [FAIL] SCH-014: My Jobs page should return 200 [FAIL] SCH-014: Unscheduled Jobs page should return 200 [FAIL] SCH-014: Complete Jobs page should return 200 [FAIL] SCH-014: All Complete Jobs page should return 200 [FAIL] My Jobs did not return 200 [FAIL] SCH-016: Assignments page should return 200 [FAIL] Assignments did not return 200 [FAIL] SCH-020: inventory/costlistprice should return 200 (not 500) [FAIL] SCH-020: reviewbg/showthumb should return 200 or 302 (not 500) [FAIL] SCH-020: sc_labourreport/report/0 should return 200 or 302 (not 500) [FAIL] Customer page should return 200 or 302 [FAIL] Ticket page should return 200 or 302 [FAIL] Proposal index should return 200 or 302 [FAIL] PV Jobs page should return 200 or 302 [FAIL] SWH Jobs page should return 200 or 302 [FAIL] Config page should return 200 for superadmin [FAIL] Config page did not return 200 [FAIL] Config page did not return 200 [FAIL] Admin users page should return 200 [FAIL] Admin users did not return 200 [FAIL] inventory/costlistprice should return 200 [FAIL] inventory/costlistprice did not return 200 [FAIL] Config page did not return 200 [FAIL] Config page should return 200 or 302 for superuser [FAIL] SCH-015: PV Jobs list should return 200 [FAIL] SCH-015: Job detail page should return 200 [FAIL] Job detail did not return 200 [FAIL] Job detail did not return 200 [FAIL] Job detail did not return 200 [FAIL] Job detail did not return 200 [FAIL] PV Jobs list did not return 200 [FAIL] PV job detail did not return 200 [FAIL] Baseline: Login should return 302 redirect [FAIL] Baseline: Admin calendar should return 200 [FAIL] Baseline: Dayview should return 200 [FAIL] Baseline: Proposal page should return 200 [FAIL] Baseline: Customer page should return 200 or 302 [FAIL] Baseline: PV Jobs page should return 200 [FAIL] Baseline: AC Proposal page should return 200 or 302 [FAIL] Baseline: SWH Proposal page should return 200, 302, or 500 (BUG-001) [FAIL] Baseline: Ticket page should return 200 or 302 [FAIL] Baseline: Assignments page should return 200 [FAIL] Baseline: Config page should return 200 [FAIL] Baseline: Generated content checksums for 0 pages [FAIL] Baseline: Login page should be publicly accessible (200) Report saved to: /var/www/html/dev_scheduler/QA/tools/../reports/test_results_20260228_083954.json