ó
    ùÚ j  ã                  ó²   • S r SSKJr  SSKJrJrJr  SSKJr  SSK	J
r
  SSKJr  SSKJr  SSKJr  SS	KJrJr  SS
KJr   " S S5      r          SS jrg)u;   QA Engineer skill â€” test matrix and Apex test validation.é    )Úannotations)ÚDictÚListÚOptional)ÚUUID)ÚDesignArtifact)ÚQAReportArtifact)ÚRequirementsArtifact)ÚArtifactStore)Ú	LLMClientÚget_llm_client)ÚApexTestResultc                  óR   • \ rS rSr  S     SS jjr            SS jrSrg)	Ú
QAEngineeré   Nc                ód   • U=(       d
    [        5       U l        U=(       d
    [        5       U l        g )N)r   Úllmr   Ú	artifacts)Úselfr   r   s      Ú3/var/www/html/gaurav/packages/agents/qa_engineer.pyÚ__init__ÚQAEngineer.__init__   s!   € ð
 ×*œ.Ó*ˆŒØ"×5¤m£oˆ�ó    c             ƒ  ó  #   • UR                  5        VVs0 sH  u  pgUR                  S5      (       d  M  Xg_M!     nnn[        UUUUS9n	U R                  R	                  U	5      I S h  v•N n
UR
                  U
l        UR                  U
l        UR                  U
l	        [        UR                  5      U
l        [        S U 5       5      nUR                  (       a&  SU
l        S[        UR                  5       S3U
l        OâUR                  S:”  a<  UR                  UR                  :  a"  SU
l        U
R                   =(       d    SU
l        O–U
R"                  (       d3  UR$                  (       a"  SU
l        U
R                   =(       d    S	U
l        ORU(       d   UR                  (       d  S
U
l        SU
l        O+U
R                  (       d  U
R                   =(       d    SU
l        U R&                  R)                  USU
5        U
$ s  snnf  GN¢7f)Nz
force-app/)ÚrequirementsÚdesignÚfile_mapÚapex_resultc              3  ó@   #   • U H  oR                  S 5      v •  M     g7f)z.clsN)Úendswith©Ú.0Úps     r   Ú	<genexpr>Ú$QAEngineer.run_qa.<locals>.<genexpr>1   s   é € ÐC±?¨a—z‘z &×)Ð)²?ùs   ‚Fu   QA failed â€” z Apex test failure(s)r   u)   QA failed â€” Apex tests did not all passu'   QA failed â€” no test scenarios derivedTuI   QA passed â€” acceptance criteria covered; no Apex classes in this changeu%   QA failed â€” mandatory coverage gapszqa-report.json)ÚitemsÚ
startswithÚbuild_qa_promptr   Úgenerate_qa_reportÚjira_keyÚ	tests_runÚapex_tests_runÚtests_passedÚapex_tests_passedÚlistÚfailuresÚapex_failuresÚanyÚpassedÚlenÚsummaryÚtest_matrixÚacceptance_criteriar   Ú
write_json)r   r   r   r   r   Úrun_idr#   ÚcÚforce_app_filesÚpromptÚartifactÚhas_apexs               r   Úrun_qaÚQAEngineer.run_qa   s±  é € ð &Ÿ^™^Ô-ô
Ù-‘T�Q°·±¸l×1K‹DˆAŠDÑ-ð 	ñ 
ô !Ø%ØØ$Ø#ñ	
ˆð Ÿ™×4Ñ4°VÓ<×<ˆØ(×1Ñ1ˆÔØ"-×"7Ñ"7ˆÔØ%0×%=Ñ%=ˆÔ"Ü!% k×&:Ñ&:Ó!;ˆÔäÑC±?ÓCÓCˆØ××Ø#ˆHŒOØ!/´°K×4HÑ4HÓ0IÐ/JÐJ_Ð`ˆHÕØ×"Ñ" QÓ&¨;×+CÑ+CÀk×F[ÑF[Ó+[Ø#ˆHŒOØ'×/Ñ/×^Ð3^ˆHÕØ×%×%¨,×*J×*JØ#ˆHŒOØ'×/Ñ/×\Ð3\ˆHÕÞ +×"6×"6à"ˆHŒOà[ð Õð ——Ø'×/Ñ/×ZÐ3ZˆHÔà�‰×!Ñ! &Ð*:¸HÔEØˆùóG
ò =ùs!   ‚H–HµH»-HÁ(H
Á)F"H)r   r   )NN)r   zOptional[LLMClient]r   zOptional[ArtifactStore]ÚreturnÚNone)r   r
   r   r   r   úDict[str, str]r   r   r9   r   rA   r	   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r?   Ú__static_attributes__© r   r   r   r      sl   † ð $(Ø-1ð6à ð6ð +ð6ð 
õ	6ð,ð +ð,ð ð	,ð
 !ð,ð $ð,ð ð,ð 
÷,r   r   c                óÞ  • SR                  S U R                   5       5      =(       d    SnSR                  S UR                   5       5      =(       d    SnSR                  S UR                   5       5      =(       d    SnSR                  S [	        U5       5       5      =(       d    SnSU R
                   SU R                   S	U S
U SU SUR                   SUR                   SU S3$ )NÚ
c              3  ó*   #   • U H
  nS U 3v •  M     g7f©ú- NrI   )r"   Úas     r   r$   Ú"build_qa_prompt.<locals>.<genexpr>O   s   é € ÐFÑ%E �R˜�s•8Ò%Eùó   ‚z(none)c              3  óX   #   • U H!  nS UR                    SUR                   3v •  M#     g7f)rN   Ú N)Úmetadata_typeÚapi_name)r"   Úis     r   r$   rP   P   s*   é € ð Ù5I°ˆ"ˆQ�_‰_Ð˜Q˜qŸz™z˜lÕ+Ò5Iùs   ‚(*c              3  ó*   #   • U H
  nS U 3v •  M     g7frM   rI   )r"   Úfs     r   r$   rP   S   s   é € Ð@Ñ+? a˜2˜a˜S�Ò+?ùrQ   c              3  ó*   #   • U H
  nS U 3v •  M     g7frM   rI   r!   s     r   r$   rP   T   s   é € Ð=Ñ,< q˜B˜q˜c�(Ò,<ùrQ   z¦You are the QA Engineer for Agent Nova (Salesforce development automation).
Derive positive, negative, and manual test scenarios from acceptance criteria.

Jira key: z

Summary: z

Acceptance criteria:
z

Metadata plan:
z

Generated files:
z 

Apex test results:
tests_run: z
tests_passed: z
failures:
uR  

passed rules:
- Set passed=true when Apex failures are empty AND test_matrix covers the acceptance criteria.
- tests_run=0 is OK when Generated files have no Apex classes (.cls) â€” this is metadata-only work.
- Do NOT fail solely because Apex tests were not run / tests_run is 0 for metadata-only changes.
- Set passed=false only for Apex failures, incomplete AC coverage, or missing test scenarios.

For each test_matrix item, type MUST be lowercase exactly one of: positive, negative, manual.
Include at least one positive and one negative scenario per acceptance criterion when possible.
)	Újoinr7   Úmetadata_planr0   Úsortedr*   r5   r+   r-   )r   r   r   r   ÚacÚplanr0   Ú	file_lists           r   r(   r(   H   s  € ð 
�‰ÑF \×%EÒ%EÓFÓ	F×	RÈ(€BØ�9‰9ñ Ø5;×5IÒ5Ióó ÷ à	ð 	ð �y‰yÑ@¨;×+?Ò+?Ó@Ó@×LÀH€HØ—	‘	Ñ=¬F°8Ô,<Ó=Ó=×IÀ€Iðð × Ñ Ð
!ð "
Ø
×
Ñ
Ð	ð  ð €ð ð €ð ð €ð ð ×!Ñ!Ð"ð #Ø×'Ñ'Ð(ð )à	€
ð 
ð'ð r   N)
r   r
   r   r   r   rC   r   r   rA   Ústr)Ú__doc__Ú
__future__r   Útypingr   r   r   Úuuidr   Úpackages.artifacts.designr   Úpackages.artifacts.qa_reportr	   Úpackages.artifacts.requirementsr
   Úpackages.db.artifactsr   Úpackages.integrations.llmr   r   Ú packages.integrations.salesforcer   r   r(   rI   r   r   Ú<module>rk      sf   ðÙ Aå "ç 'Ñ 'Ý å 4Ý 9Ý @Ý /ß ?Ý ;÷5ñ 5ðp+à&ð+ð ð+ð ð	+ð
  ð+ð 	õ+r   