| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330 |
- <?php
- /**
- * The results view file of testcase module of ZenTaoPMS.
- * @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
- * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
- * @author Mengyi Liu <liumengyi@easycorp.ltd>
- * @package testcase
- * @link https://www.zentao.net
- */
- namespace zin;
- jsVar('tab', $app->tab);
- modalHeader(set::title($lang->testtask->lblResults), set::entityText($case->title), set::entityID($case->id));
- div
- (
- setClass('border-b'),
- div
- (
- h::strong($lang->testcase->precondition)
- ),
- div
- (
- setClass('leading-6 my-2', empty($case->precondition) ? 'h-6' : ''),
- nl2br($case->precondition)
- )
- );
- $count = count($results);
- $trs = array();
- $fileModals = array();
- $trCount = 1;
- $failCount = 0;
- $isEn = $app->getClientLang() == 'en';
- foreach($results as $i => $result)
- {
- $class = ($result->caseResult == 'pass' ? 'success' : ($result->caseResult == 'fail' ? 'danger' : ($result->caseResult == 'blocked' ? 'warning' : '')));
- $fileCount = count($result->files);
- $isChinese = strpos($app->getClientLang(), 'zh-') !== false;
- if($result->node == 0 && $result->task > 0)
- {
- $taskResult = $isChinese ? sprintf($lang->testtask->runInTask, zget($testtasks, $result->task, ''), zget($builds, $result->build, '')) : sprintf($lang->testtask->runInTask, zget($testtasks, $result->task, ''), zget($users, $result->lastRunner), zget($builds, $result->build, ''));
- }
- else
- {
- $taskResult = !$isChinese ? ' by <strong>' . zget($users, $result->lastRunner) . '</strong>' : '';
- }
- if($class != 'success') $failCount ++;
- $trs[] = h::tr
- (
- setClass("result-item result{$class} h-12 is-collapsed"),
- on::click('toggleShowResults'),
- set('data-id', $result->id),
- set('data-status', $result->node > 0 && empty($result->ZTFResult) ? 'running': 'ready'),
- h::td
- (
- span(setClass('toggle-icon inline-block align-middle mr-2')),
- width('120px'),
- label(setClass('mx-2 gray-pale'), "#{$result->id}"),
- $result->date,
- $result->node > 0 ? sprintf($lang->testtask->runNode, zget($users, $result->lastRunner), $result->nodeName, $lang->testtask->runCase) : '',
- $result->node == 0 || !empty($result->ZTFResult) ? html
- (
- $isChinese ? sprintf($lang->testtask->runCaseResult, zget($users, $result->lastRunner), $taskResult, $class, $lang->testcase->resultList[$result->caseResult]) : sprintf($lang->testtask->runCaseResult, $taskResult, $class, $lang->testcase->resultList[$result->caseResult])
- ) : h::strong
- (
- setClass('text-waring'),
- $lang->testtask->running
- ),
- $result->node > 0 ? span
- (
- setClass('label'),
- $lang->testtask->auto
- ) : null
- )
- );
- $stepResultTrs = array();
- foreach($result->stepResults as $key => $stepResult)
- {
- if(empty($stepResult['id'])) $stepResult['id'] = 0;
- if(empty($stepResult['type'])) $stepResult['type'] = 'step';
- if(empty($stepResult['parent'])) $stepResult['parent'] = 0;
- if(empty($stepResult['result'])) $stepResult['result'] = 0;
- if(empty($stepResult['grade'])) $stepResult['grade'] = 0;
- $itemTds = array();
- $modalID = $result->id . '-' . $key;
- $fileCount = count($stepResult['files']);
- $resultFile = !empty($stepResult['files']) ? a
- (
- on::click('setFileModalHeight'),
- set::href("#stepResult{$modalID}"),
- set('data-toggle', 'modal'),
- set('data-position', 'center'),
- icon('paper-clip'),
- $fileCount
- ) : '';
- $expectWidth = $isEn ? 'calc(25%)' : 'calc(25% + 2px)';
- $versionWidth = $isEn ? '94px' : '80px';
- $resultWidth = $isEn ? '90px' : '56px';
- $stepWidth = $isEn ? 'calc(75% - 504px)' : 'calc(75% - 292px)';
- $itemTds[] = div
- (
- setClass('text-left flex border-r break-all'),
- width($expectWidth),
- isset($stepResult['expect']) ? html(nl2br($stepResult['expect'])) : ''
- );
- $itemTds[] = div
- (
- setClass('text-left flex border-r text-gray'),
- width($versionWidth),
- isset($stepResult['version']) ? "#{$stepResult['version']}" : ''
- );
- $itemTds[] = !empty($stepResult['result']) ? div
- (
- setClass("status-{$stepResult['result']} text-center flex border-r"),
- width('80px'),
- $lang->testcase->resultList[$stepResult['result']]
- ) : div
- (
- setClass('border-r'),
- width('80px')
- );
- $itemTds[] = !empty($stepResult['result']) ? div
- (
- setClass('text-left flex border-r break-all'),
- width('240px'),
- html(nl2br($stepResult['real'] ?? ''))
- ) : div
- (
- setClass('border-r'),
- width('240px')
- );
- if(empty($stepResult['result']))
- {
- $itemTds[] = div(width('56px'));
- }
- else
- {
- $itemTds[] = div
- (
- setClass('text-center flex'),
- width('56px'),
- !empty($stepResult['files']) ? a
- (
- on::click('setFileModalHeight'),
- set::href("#stepResultFileModal{$modalID}"),
- set('data-toggle', 'modal'),
- set('data-position', 'center'),
- icon('paper-clip'),
- $fileCount
- ) : ''
- );
- }
- $fileModals[] = modal
- (
- set::id("stepResultFileModal{$modalID}"),
- !empty($stepResult['files']) ? fileList(set::extra($stepResult['id']), set::files($stepResult['files'])) : ''
- );
- $stepResultTrs[] = div
- (
- setClass("step flex border-b step-{$stepResult['type']} "),
- set('data-parent', $stepResult['parent']),
- set('data-grade', $stepResult['grade']),
- set('data-id', $key),
- div
- (
- setClass('step-id flex border-r check-item'),
- width($stepWidth),
- $result->caseResult == 'fail' ? checkbox
- (
- on::click('toggleCheckChildItem'),
- set::id("stepIdList[{$result->id}][{$stepResult['id']}]"),
- set('name', "stepIdList[{$result->id}][{$stepResult['id']}]"),
- set('value', $key)
- ) : '',
- div
- (
- setClass('inputGroup row', 'pl-' . ((zget($stepResult, 'grade', 1) - 1) * 2)),
- span
- (
- setClass('step-item-id mr-2'),
- zget($stepResult, 'name', '')
- ),
- div(setClass('wrap break-all'), html(nl2br(zget($stepResult, 'desc', ''))))
- )
- ),
- $itemTds
- );
- }
- $stepResultTrs[] = !empty($result->ZTFResult) && $result->node > 0 ? div
- (
- h::p($lang->testtask->runningLog),
- h::p(html($result->ZTFResult))
- ) : '';
- $projectParam = $this->app->tab == 'project' ? "projectID={$this->session->project}," : '';
- $executionParam = $this->app->tab == 'execution' ? "executionID={$this->session->execution}" : "";
- $executionParam = isset($testtask) ? "executionID={$testtask->execution}" : $executionParam;
- $params = isset($testtask) ? ",testtask={$testtask->id}" : "";
- $params = $params . ',buildID=' . (isset($testtask->build) ? $testtask->build : $result->build);
- $linkParams = "product={$case->product}&branch={$case->branch}&extras={$projectParam}caseID={$case->id},version={$case->version},resultID={$result->id},runID={$result->run}{$params}";
- if($executionParam) $params .= ',' . $executionParam;
- $trs[] = h::tr
- (
- set::id('tr-detail_' . $trCount ++),
- setClass('result-detail hidden'),
- h::td
- (
- setClass('pd-0'),
- form
- (
- set('data-params', $linkParams),
- set::actions(array()),
- div
- (
- setClass('resultSteps ' . $result->caseResult),
- div
- (
- setClass('steps-header flex border-b'),
- div
- (
- width($stepWidth),
- setClass('text-left desc border-r'),
- $lang->testcase->stepDesc
- ),
- div
- (
- width('calc(25%)'),
- setClass('text-left border-r'),
- $lang->testcase->stepExpect
- ),
- div
- (
- width($versionWidth),
- setClass('text-center border-r'),
- $lang->testcase->version
- ),
- div
- (
- width('80px'),
- setClass('text-center border-r'),
- $lang->testcase->resultAB
- ),
- div
- (
- width('240px'),
- setClass('text-left border-r'),
- $lang->testcase->real
- ),
- div
- (
- width($resultWidth),
- setClass('text-left'),
- $lang->attach
- )
- ),
- div
- (
- setClass($isEn ? 'steps-body' : 'steps-body ml-2'),
- $stepResultTrs
- ),
- $result->caseResult == 'fail' && common::hasPriv('testcase', 'createBug') ? div
- (
- setClass('check-all flex items-center h-12 pl-4 border-t'),
- checkbox
- (
- on::click('toggleCheckAll'),
- set::id("checkAll[{$i}]"),
- set('type', 'checkbox'),
- set('name', 'checkAll'),
- set::text($lang->selectAll)
- ),
- div
- (
- btn
- (
- setClass('btn h-7 px-6 ml-8 to-bug-button'),
- set::type('primary'),
- on::click('createBug'),
- $lang->testcase->createBug
- )
- )
- ) : ''
- )
- )
- )
- );
- }
- $resultItem = array();
- $resultItem[] = span
- (
- setClass('px-3 my-1 border-r'),
- html(sprintf($lang->testtask->showResult, $count))
- );
- $resultItem[] = span
- (
- setClass('pl-3 my-1'),
- html(sprintf($lang->testtask->showFail, $failCount))
- );
- div
- (
- div
- (
- setClass('main' . ($type != 'fail' ? ' mt-6' : '')),
- set::id('casesResults'),
- $case->auto != 'unit' && $type != 'fail' ? formRowGroup
- (
- set::title($lang->testcase->resultAB),
- set::items
- (
- $resultItem
- )
- ) : null,
- h::table
- (
- setClass('table border'),
- $trs
- ),
- $fileModals
- )
- );
- render();
|