diff --git a/module/testtask/control.php b/module/testtask/control.php index 9a1d28c2d0..f021e4458a 100644 --- a/module/testtask/control.php +++ b/module/testtask/control.php @@ -1444,11 +1444,12 @@ class testtask extends control } if(empty($this->testcase)) $this->app->loadLang('testcase'); - $this->view->case = $case; - $this->view->runID = $runID; - $this->view->results = $results; - $this->view->builds = $this->loadModel('build')->getBuildPairs($case->product, $case->branch); - $this->view->users = $this->loadModel('user')->getPairs('noclosed, noletter'); + $this->view->case = $case; + $this->view->runID = $runID; + $this->view->results = $results; + $this->view->builds = $this->loadModel('build')->getBuildPairs($case->product, $case->branch); + $this->view->users = $this->loadModel('user')->getPairs('noclosed, noletter'); + $this->view->testtasks = $this->testtask->getPairs($case->product); $this->display(); } diff --git a/module/testtask/css/runcase.ui.css b/module/testtask/css/runcase.ui.css index a6c338147b..8d7d9758f0 100644 --- a/module/testtask/css/runcase.ui.css +++ b/module/testtask/css/runcase.ui.css @@ -1,9 +1,11 @@ .case-precondition {color: var(--color-slate-700);} +#caseStepForm, #caseStepForm .action-td {padding: 0px;} #caseStepForm tr {border-width: 0px;} #caseStepForm thead {background-color: unset;} #caseStepForm thead > tr > * {padding-left: 0px; font-size: 14px; color: var(--color-slate-900); font-weight: 600;} +#caseStepForm thead > tr > td.result-td {padding: 0.5rem;} #caseStepForm tbody > tr > td:not(.p-0) {padding: 0.5rem; vertical-align: top; line-height: 1.5rem;} #caseStepForm tbody > tr > td.real-td, #caseStepForm tbody > tr > td.result-td {padding: 0.25rem 0.5rem; vertical-align: middle;} -#caseStepForm tbody > tr > td.real-td {padding-left: 0px;} +#caseStepForm tbody > tr > td.real-td {padding: 0.5rem 0px;} #caseStepForm .step-item-id {color: var(--color-slate-500);} diff --git a/module/testtask/js/common.ui.js b/module/testtask/js/common.ui.js index 97d0d47f51..af10646ce9 100644 --- a/module/testtask/js/common.ui.js +++ b/module/testtask/js/common.ui.js @@ -115,6 +115,8 @@ function toggleShowResults(event) { var $target = $(event.target).closest('tr'); if($target.data('status') == 'running') return; + $target.toggleClass('is-collapsed'); + $target.toggleClass('is-expanded'); $target.toggleClass('show-detail'); var show = $target.hasClass('show-detail'); $target.next('.result-detail').toggleClass('hidden', !show); diff --git a/module/testtask/lang/de.php b/module/testtask/lang/de.php index a60f4edc00..9572b74f1d 100644 --- a/module/testtask/lang/de.php +++ b/module/testtask/lang/de.php @@ -140,8 +140,10 @@ $lang->testtask->browseBySuite = 'Browse by Suite'; $lang->testtask->passAll = 'Alle erfolgreich'; $lang->testtask->pass = 'Erfolgreich'; $lang->testtask->fail = 'Fehlgeschlagen'; -$lang->testtask->showResult = 'Ausführungen %s'; -$lang->testtask->showFail = 'Fehlgeschlagen %s'; +$lang->testtask->showResult = 'Ausführungen '; +$lang->testtask->showFail = 'Fehlgeschlagen '; +$lang->testtask->runInTask = ', in %s '; +$lang->testtask->runCaseResult = ', executed %s by %s , the results is %s.'; $lang->testtask->confirmDelete = 'Möchten Sie dieses Build löschen?'; $lang->testtask->confirmUnlinkCase = 'Möchten Sie die Verknüpfung zu dem Fall aufheben?'; diff --git a/module/testtask/lang/en.php b/module/testtask/lang/en.php index f8eba755e4..c673f49af8 100644 --- a/module/testtask/lang/en.php +++ b/module/testtask/lang/en.php @@ -140,8 +140,10 @@ $lang->testtask->browseBySuite = 'Browse by Suite'; $lang->testtask->passAll = 'Pass All'; $lang->testtask->pass = 'Pass'; $lang->testtask->fail = 'Failed'; -$lang->testtask->showResult = 'Run %s times'; -$lang->testtask->showFail = 'Failed %s times'; +$lang->testtask->showResult = 'Run times'; +$lang->testtask->showFail = 'Failed times'; +$lang->testtask->runInTask = ', in %s '; +$lang->testtask->runCaseResult = ', executed %s by %s , the results is %s.'; $lang->testtask->confirmDelete = 'Do you want to delete this build?'; $lang->testtask->confirmUnlinkCase = 'Do you want to unlink this case?'; diff --git a/module/testtask/lang/fr.php b/module/testtask/lang/fr.php index 86a147de48..67a02c2c4d 100644 --- a/module/testtask/lang/fr.php +++ b/module/testtask/lang/fr.php @@ -140,8 +140,10 @@ $lang->testtask->browseBySuite = 'Browse by Suite'; $lang->testtask->passAll = 'Tout Réussir'; $lang->testtask->pass = 'Réussite'; $lang->testtask->fail = 'Echec'; -$lang->testtask->showResult = 'Jouée %s fois'; -$lang->testtask->showFail = 'Echouée %s fois'; +$lang->testtask->showResult = 'Jouée fois'; +$lang->testtask->showFail = 'Echouée fois'; +$lang->testtask->runInTask = ', in %s '; +$lang->testtask->runCaseResult = ', executed %s by %s , the results is %s.'; $lang->testtask->confirmDelete = 'Voulez-vous supprimer ce build ?'; $lang->testtask->confirmUnlinkCase = 'Voulez-vous détacher ce CasTest ?'; diff --git a/module/testtask/lang/zh-cn.php b/module/testtask/lang/zh-cn.php index 8112270692..7c62dce6e7 100644 --- a/module/testtask/lang/zh-cn.php +++ b/module/testtask/lang/zh-cn.php @@ -140,8 +140,10 @@ $lang->testtask->browseBySuite = '按套件查看'; $lang->testtask->passAll = '全部通过'; $lang->testtask->pass = '通过'; $lang->testtask->fail = '失败'; -$lang->testtask->showResult = '共执行%s次'; -$lang->testtask->showFail = '失败%s次'; +$lang->testtask->showResult = '共执行次'; +$lang->testtask->showFail = '失败次'; +$lang->testtask->runInTask = ',在 %s 中'; +$lang->testtask->runCaseResult = ',由 %s 执行 %s,结果为 %s。'; $lang->testtask->confirmDelete = '您确认要删除该测试单吗?'; $lang->testtask->confirmUnlinkCase = '您确认要移除该用例吗?'; diff --git a/module/testtask/model.php b/module/testtask/model.php index 412d5d598b..9cfd6ebac2 100755 --- a/module/testtask/model.php +++ b/module/testtask/model.php @@ -1458,7 +1458,7 @@ class testtaskModel extends model ->andWhere('version')->in($relatedVersions) ->orderBy('id') ->fetchGroup('version', 'id'); - $runs = $this->dao->select('t1.id,t2.build')->from(TABLE_TESTRUN)->alias('t1') + $runs = $this->dao->select('t1.id,t1.task,t2.build')->from(TABLE_TESTRUN)->alias('t1') ->leftJoin(TABLE_TESTTASK)->alias('t2')->on('t1.task=t2.id') ->where('t1.id')->in($runIdList) ->fetchPairs(); @@ -1490,7 +1490,8 @@ class testtaskModel extends model foreach($results as $resultID => $result) { $result->stepResults = unserialize($result->stepResults); - $result->build = $result->run ? zget($runs, $result->run, 0) : 0; + $result->build = $result->run && isset($runs[$result->run]) ? $runs[$result->run]->build : 0; + $result->task = $result->run && isset($runs[$result->run]) ? $runs[$result->run]->task : 0; $result->nodeName = $result->node ? zget($nodes, $result->node, '') : ''; if(!empty($result->ZTFResult)) diff --git a/module/testtask/ui/results.html.php b/module/testtask/ui/results.html.php index d4be390f1d..432d4879df 100644 --- a/module/testtask/ui/results.html.php +++ b/module/testtask/ui/results.html.php @@ -45,45 +45,26 @@ foreach($results as $i => $result) if($class != 'success') $failCount ++; $trs[] = h::tr ( - setClass("result-item result{$class}"), + 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->id}" - ), - h::td - ( - width('180px'), - $result->date - ), - $result->node > 0 ? h::td - ( - sprintf($lang->testtask->runNode, zget($users, $result->lastRunner), $result->nodeName, $lang->testtask->runCase), - span + $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 - ), - ) : h::td - ( - zget($users, $result->lastRunner) . ' ' . $lang->testtask->runCase, - ), - h::td - ( - width('150px'), - zget($builds, $result->build, ''), - ), - h::td - ( - setClass('text-right'), - width('60px'), - $result->node == 0 || !empty($result->ZTFResult) ? h::strong + ) : null, + $result->node == 0 && $result->task > 0 ? html(sprintf($lang->testtask->runInTask, zget($testtasks, $result->task, ''))) : '', + $result->node == 0 || !empty($result->ZTFResult) ? html ( - setClass("result-testcase status-{$result->caseResult}"), - $lang->testcase->resultList[$result->caseResult], + sprintf($lang->testtask->runCaseResult, zget($users, $result->lastRunner), zget($builds, $result->build, ''), $class, $lang->testcase->resultList[$result->caseResult]) ) : h::strong ( setClass('text-waring'), @@ -190,21 +171,16 @@ foreach($results as $i => $result) set('name', $inputName), set('value', $key), ), - h::label($stepClass == 'step-group' ? $stepID : ''), - ) : $stepID, - ), - h::td - ( - setClass('text-left'), + ) : '', $stepResult['type'] == 'group' ? set('colspan', '6') : '', div ( setClass('inputGroup'), - $stepResult['type'] == 'item' ? h::span + h::span ( setClass('step-item-id mr-2'), - "{$stepID}.{$childID}", - ) : '', + $stepResult['type'] == 'item' ? "{$stepID}.{$childID}" : $stepID, + ), isset($stepResult['desc']) ? nl2br($stepResult['desc']) : '', ), ), @@ -240,7 +216,7 @@ foreach($results as $i => $result) setClass('to-bug-button'), btn ( - setClass('btn'), + setClass('btn h-7'), set::type('primary'), set::btnType('btnType'), on::click('createBug'), @@ -279,16 +255,11 @@ foreach($results as $i => $result) set('action', createLink('bug', 'create', $linkParams)), h::table ( - setClass('table condensed resultSteps'), + setClass('table resultSteps'), h::thead ( h::tr ( - h::td - ( - width('60px'), - $lang->testcase->stepID, - ), h::td ( setClass('text-left'), @@ -340,27 +311,29 @@ div ( setClass('main'), set::id('casesResults'), - h::table + $case->auto != 'unit' ? formRowGroup ( - setClass('table condensed table-hover border'), - $case->auto != 'unit' ? h::caption + set::title($lang->testcase->result), + set::items ( - setClass('text-left bg-lighter leading-8 px-3 border'), - h::strong + array ( - $lang->testcase->result, - h::span + span ( - setClass('ml-4'), + setClass('px-3 my-1 border-r'), html(sprintf($lang->testtask->showResult, $count)), ), - h::span + span ( - setClass('ml-2'), + setClass('pl-3 my-1'), html(sprintf($lang->testtask->showFail, $failCount)), ), ), - ) : '', + ), + ) : null, + h::table + ( + setClass('table condensed table-hover border'), $trs, ), $fileModals, diff --git a/module/testtask/ui/runcase.html.php b/module/testtask/ui/runcase.html.php index d1c331682f..1616c1fcc2 100644 --- a/module/testtask/ui/runcase.html.php +++ b/module/testtask/ui/runcase.html.php @@ -99,7 +99,7 @@ if($confirm != 'yes') textarea ( on::keyup('realChange'), - setClass('leading-4 w-full' ), + setClass('leading-4 w-60' ), set('rows', '1'), set::name("reals[{$step->id}]"), nl2br(zget($step, 'real', '')), @@ -108,7 +108,7 @@ if($confirm != 'yes') ), h::td ( - setClass('p-0 bd-0 text-right'), + setClass('p-0 bd-0'), width('40px'), btn ( @@ -185,21 +185,23 @@ form ( h::td ( - width('cal(30%)'), + setClass('w-96'), $lang->testcase->stepDesc, ), h::td ( - width('calc(30%)'), + width('cal(760px - 24rem)'), $lang->testcase->stepExpect, ), h::td ( - width('100px'), + setClass('result-td'), + width('96px'), $lang->testcase->result, ), h::td ( + width('280px'), $lang->testcase->real, ), ) : '', @@ -212,6 +214,7 @@ form h::td ( set('colspan', '4'), + setClass('action-td p-0'), div ( setClass('text-center'), @@ -224,7 +227,7 @@ form ) : '', $run->case->status != 'wait' && $confirm != 'yes' ? btn ( - setClass('primary btn-wide w-24 mx-6'), + setClass('primary btn-wide w-24 m-6'), set::btnType('submit'), $lang->save, ) : '', @@ -257,7 +260,7 @@ form div ( - setClass('main'), + setClass('main border-t pt-6'), set::id('resultsContainer'), div (