Files
EasySoft-ZenTaoPMS/module/testtask/ui/results.html.php
T

346 lines
11 KiB
PHP

<?php
declare(strict_types=1);
/**
* 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 h-6 my-2'),
nl2br($case->precondition),
),
);
$count = count($results);
$trs = array();
$fileModals = array();
$trCount = 1;
$failCount = 0;
foreach($results as $i => $result)
{
$class = ($result->caseResult == 'pass' ? 'success' : ($result->caseResult == 'fail' ? 'danger' : ($result->caseResult == 'blocked' ? 'warning' : '')));
$fileCount = '(' . count($result->files) . ')';
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
(
set('colspan', '6'),
span(setClass('toggle-icon circle inline-block align-middle mr-2')),
width('120px'),
$result->date,
$result->node > 0 ? sprintf($lang->testtask->runNode, zget($users, $result->lastRunner), $result->nodeName, $lang->testtask->runCase) : '',
$result->node > 0 ? span
(
setClass('label'),
$lang->testtask->auto
) : null,
$result->node == 0 && $result->task > 0 ? html(sprintf($lang->testtask->runInTask, zget($testtasks, $result->task, ''))) : '',
$result->node == 0 || !empty($result->ZTFResult) ? html
(
sprintf($lang->testtask->runCaseResult, zget($users, $result->lastRunner), zget($builds, $result->build, ''), $class, $lang->testcase->resultList[$result->caseResult])
) : h::strong
(
setClass('text-waring'),
$lang->testtask->running,
),
),
h::td
(
width('60px'),
!empty($result->files) ? h::a
(
set::href("#caseResult{$result->id}"),
set('data-toggle', 'modal'),
$lang->files . $fileCount,
) : '',
),
h::td
(
setClass('text-center'),
width('50px'),
icon
(
setClass('collapse-handle'),
'angle-down'
),
),
);
$fileModals[] = modal
(
set::id("caseResult{$result->id}"),
!empty($result->files) ? fileList(set::files($result->files)) : '',
);
$stepID = $childID = 0;
$stepResultTrs = array();
foreach($result->stepResults as $key => $stepResult)
{
if(empty($stepResult['type'])) $stepResult['type'] = 'step';
if(empty($stepResult['parent'])) $stepResult['parent'] = 0;
if($stepResult['type'] == 'group' || $stepResult['type'] == 'step')
{
$stepID ++;
$childID = 0;
}
$stepClass = $stepResult['type'] == 'item' ? "step-item group-{$stepResult['parent']}" : "step-group";
$inputName = $stepResult['type'] != 'group' ? 'stepIdList[]' : '';
$itemTds = array();
if($stepResult['type'] != 'group')
{
$modalID = $result->id . '-' . $key;
$fileCount = '(' . count($stepResult['files']) . ')';
$itemTds[] = h::td
(
setClass('text-left'),
isset($stepResult['expect']) ? html(nl2br($stepResult['expect'])) : '',
);
$itemTds[] = h::td(isset($result->version) ? html($result->version) : '');
$itemTds[] = !empty($stepResult['result']) ? h::td
(
setClass("status-{$stepResult['result']} text-center"),
$lang->testcase->resultList[$stepResult['result']],
) : h::td();
$itemTds[] = !empty($stepResult['result']) ? h::td
(
nl2br($stepResult['real']),
) : h::td();
$itemTds[] = !empty($stepResult['result']) ? h::td
(
setClass('text-center'),
!empty($stepResult['files']) ? h::a
(
set::href("#stepResult{$modalID}"),
set('data-toggle', 'modal'),
$lang->files . $fileCount,
) : '',
) : h::td();
$fileModals[] = modal
(
set::id("stepResult{$modalID}"),
!empty($stepResult['files']) ? fileList(set::files($stepResult['files'])) : '',
);
}
$stepResultTrs[] = h::tr
(
setClass("step {$stepClass}"),
set('data-parent', $stepResult['parent']),
set('data-id', $key),
h::td
(
setClass('step-id'),
$result->caseResult == 'fail' ? div
(
setClass('checkbox-primary check-item'),
on::click('toggleCheckChildItem'),
h::input
(
set::id($inputName),
set('type', 'checkbox'),
set('name', $inputName),
set('value', $key),
),
) : '',
$stepResult['type'] == 'group' ? set('colspan', '6') : '',
div
(
setClass('inputGroup'),
h::span
(
setClass('step-item-id mr-2'),
$stepResult['type'] == 'item' ? "{$stepID}.{$childID}" : $stepID,
),
isset($stepResult['desc']) ? nl2br($stepResult['desc']) : '',
),
),
$itemTds,
);
$childID ++;
}
$stepResultTrs[] = $result->caseResult == 'fail' && common::hasPriv('testcase', 'createBug') ? h::tr
(
h::td
(
set('colspan', '2'),
div
(
setClass('checkbox-primary check-all'),
on::click('toggleCheckAll'),
h::input
(
set::id("checkAll[{$i}]"),
set('type', 'checkbox'),
set('name', 'checkAll'),
),
h::label($lang->selectAll),
),
),
h::td
(
set('colspan', '4'),
),
h::td
(
setClass('to-bug-button'),
btn
(
setClass('btn h-7'),
set::type('primary'),
set::btnType('btnType'),
on::click('createBug'),
set('data-target', '_blank'),
set('data-close-modal', true),
$lang->testcase->createBug
),
),
) : '';
$stepResultTrs[] = !empty($result->ZTFResult) && $result->node > 0 ? h::td
(
set('colspan', '6'),
h::p($lang->testtask->runningLog),
h::p($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'),
set('colspan', '7'),
h::form
(
setClass('form load-indicator form-ajax form-grid'),
set('data-params', $linkParams),
set('action', createLink('bug', 'create', $linkParams)),
h::table
(
setClass('table resultSteps'),
h::thead
(
h::tr
(
h::td
(
setClass('text-left'),
$lang->testcase->stepDesc,
),
h::td
(
width('25%'),
setClass('text-left'),
$lang->testcase->stepExpect,
),
h::td
(
width('60px'),
setClass('text-left'),
$lang->testcase->stepVersion,
),
h::td
(
width('80px'),
setClass('text-center'),
$lang->testcase->result,
),
h::td
(
width('100px'),
setClass('text-left'),
$lang->testcase->real,
),
h::td
(
width('80px'),
),
),
),
h::tbody
(
$stepResultTrs,
),
),
),
),
);
}
div
(
div
(
setClass('main'),
set::id('casesResults'),
$case->auto != 'unit' ? formRowGroup
(
set::title($lang->testcase->result),
set::items
(
array
(
span
(
setClass('px-3 my-1 border-r'),
html(sprintf($lang->testtask->showResult, $count)),
),
span
(
setClass('pl-3 my-1'),
html(sprintf($lang->testtask->showFail, $failCount)),
),
),
),
) : null,
h::table
(
setClass('table condensed table-hover border'),
$trs,
),
$fileModals,
),
);
jsVar('bugCreateParams', $linkParams);
render();