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
(