From 7b67451f04c8897d4b4d680ca234908ca3510f70 Mon Sep 17 00:00:00 2001 From: yulujie Date: Tue, 28 Oct 2025 09:36:32 +0800 Subject: [PATCH 1/7] *[uitest] Add waittime. --- module/execution/test/lib/ui/closeexecution.ui.class.php | 1 + 1 file changed, 1 insertion(+) diff --git a/module/execution/test/lib/ui/closeexecution.ui.class.php b/module/execution/test/lib/ui/closeexecution.ui.class.php index 479789e250..2866cb154d 100644 --- a/module/execution/test/lib/ui/closeexecution.ui.class.php +++ b/module/execution/test/lib/ui/closeexecution.ui.class.php @@ -35,6 +35,7 @@ class closeExecutionTester extends tester { $this->inputFields($realEnd, $executionId); $form = $this->loadPage(); + $form->wait(1); if($form->dom->status->getText() != $this->lang->execution->statusList->closed) return $this->failed('执行状态错误'); if($form->dom->realEndView->getText() != $realEnd) return $this->failed('执行实际完成日期错误'); return $this->success('关闭执行成功'); From 2aa74a103f153644e4af5f69609b75e4495f049b Mon Sep 17 00:00:00 2001 From: yulujie Date: Tue, 28 Oct 2025 09:47:32 +0800 Subject: [PATCH 2/7] *[uitest] Add waittime. --- module/execution/test/lib/ui/managemembers.ui.class.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/module/execution/test/lib/ui/managemembers.ui.class.php b/module/execution/test/lib/ui/managemembers.ui.class.php index e83bfc811c..646d407127 100755 --- a/module/execution/test/lib/ui/managemembers.ui.class.php +++ b/module/execution/test/lib/ui/managemembers.ui.class.php @@ -37,6 +37,7 @@ class manageMembersTester extends tester $firstAccount = $form->dom->firstAccount->attr('value'); $form->dom->firstDelBtn->click(); $form->dom->btn($this->lang->save)->click(); + $form->wait(1); $form = $this->loadPage('execution', 'team'); if($form->dom->firstUser->getText() != $firstAccount) return $this->success('删除团队成员成功'); @@ -59,7 +60,7 @@ class manageMembersTester extends tester $form->dom->firstRemoveBtn->click(); $form->wait(1); $form->dom->alertModal(); - $form->wait(1); + $form->wait(2); $numAfter = $form->dom->num->getText(); if($numBefore == $numAfter + 1) return $this->success('移除团队成员成功'); return $this->failed('移除团队成员失败'); From 327072258210e4f60f72803c14e06507b45f4886 Mon Sep 17 00:00:00 2001 From: yulujie Date: Tue, 28 Oct 2025 13:02:56 +0800 Subject: [PATCH 3/7] *[uitest] Fix bug. --- .../execution/test/lib/ui/story.ui.class.php | 70 ++++++++++++++----- module/execution/test/ui/story.php | 1 + 2 files changed, 54 insertions(+), 17 deletions(-) diff --git a/module/execution/test/lib/ui/story.ui.class.php b/module/execution/test/lib/ui/story.ui.class.php index f77dc5e355..c972add276 100755 --- a/module/execution/test/lib/ui/story.ui.class.php +++ b/module/execution/test/lib/ui/story.ui.class.php @@ -2,6 +2,19 @@ include dirname(__FILE__, 6) . '/test/lib/ui.php'; class storyTester extends tester { + /** + * 打开页面。 + * Open page. + * + * @access public + * @return object + */ + public function open() + { + $form = $this->initForm('execution', 'story', array('execution' => '2'), 'appIframe-execution'); + $form->wait(3); + } + /** * 检查Tab标签下的数据。 * Check the data of the Tab tag. @@ -13,8 +26,7 @@ class storyTester extends tester */ public function checkTab($tab, $expectNum) { - $form = $this->initForm('execution', 'story', array('execution' => '2'), 'appIframe-execution'); - $form->wait(3); + $form = $this->loadPage(); $form->dom->$tab->click(); $form->wait(1); if($form->dom->num->getText() == $expectNum) return $this->success($tab . '下显示条数正确'); @@ -30,13 +42,18 @@ class storyTester extends tester */ public function unlinkStory() { - $form = $this->initForm('execution', 'story', array('execution' => '2'), 'appIframe-execution'); - $form->wait(3); + $form = $this->loadPage(); + /* 确保全部标签高亮 */ + if($form->dom->allTab->attr('class') != 'active') + { + $form->dom->allTab->click(); + $form->wait(2); + } $name = $form->dom->firstName->getText(); $form->dom->firstUnlinkBtn->click(); $form->wait(1); $form->dom->alertModal(); - $form->wait(1); + $form->wait(3); $form->dom->search(array("{$this->lang->story->name},=,{$name}")); $form->wait(1); @@ -53,15 +70,20 @@ class storyTester extends tester */ public function batchUnlinkStory() { - $form = $this->initForm('execution', 'story', array('execution' => '2'), 'appIframe-execution'); - $form->wait(3); + $form = $this->loadPage(); + /* 确保全部标签高亮 */ + if($form->dom->allTab->attr('class') != 'active') + { + $form->dom->allTab->click(); + $form->wait(2); + } $name = $form->dom->firstName->getText(); $form->dom->firstCheckbox->click(); $form->wait(1); $form->dom->btn($this->lang->execution->unlinkStory)->click(); $form->wait(1); $form->dom->alertModal(); - $form->wait(1); + $form->wait(3); $form->dom->search(array("{$this->lang->story->name},=,{$name}")); $form->wait(1); @@ -80,7 +102,7 @@ class storyTester extends tester */ public function batchEditPhase($status, $phase) { - $form = $this->initForm('execution', 'story', array('execution' => '2'), 'appIframe-execution'); + $form = $this->initForm('execution', 'story', array('execution' => '2'), 'appIframe-execution'); $form->wait(3); $storyStatus = $this->lang->story->statusList->$status; $storyPhase = $this->lang->story->stageList->$phase; @@ -88,7 +110,7 @@ class storyTester extends tester $form->dom->xpath['stage'] = $form->dom->xpath['phases'] . "//*[text() = '{$storyPhase}']"; $form->dom->search(array("{$this->lang->story->status},=,{$storyStatus}")); - $form->wait(1); + $form->wait(2); /* 因为阶段字段被遮挡,所以需要滚动到可见区域 */ $form->dom->firstPhase->scrollToElement(); @@ -97,9 +119,12 @@ class storyTester extends tester $form->dom->phaseBtn->click(); $form->wait(1); $form->dom->stage->click(); - $form->wait(1); - if($status == 'draft' || $status == 'closed') $form->dom->alertModal(); - $form->wait(1); + if($status == 'draft' || $status == 'closed') + { + $form->wait(1); + $form->dom->alertModal(); + } + $form->wait(2); $afterPhase = $form->dom->firstPhase->getText(); if($status == 'draft' || $status == 'closed') @@ -124,8 +149,13 @@ class storyTester extends tester */ public function assignTo($user) { - $form = $this->initForm('execution', 'story', array('execution' => '2'), 'appIframe-execution'); - $form->dom->waitElement($form->dom->xpath['firstAssignTo'], 10); + $form = $this->loadPage(); + /* 确保全部标签高亮 */ + if($form->dom->allTab->attr('class') != 'active') + { + $form->dom->allTab->click(); + $form->wait(2); + } $form->dom->firstAssignTo->click(); $form->wait(1); $form->dom->assignedTo->picker($user); @@ -150,13 +180,19 @@ class storyTester extends tester */ public function batchAssignTo() { - $form = $this->initForm('execution', 'story', array('execution' => '2'), 'appIframe-execution'); + $form = $this->loadPage(); + /* 确保全部标签高亮 */ + if($form->dom->allTab->attr('class') != 'active') + { + $form->dom->allTab->click(); + $form->wait(2); + } $form->dom->firstCheckbox->click(); $form->wait(1); $form->dom->batchAssignBtn->click(); $form->wait(1); $form->dom->assignToAdmin->click(); - $form->wait(1); + $form->wait(3); /* 因为指派给字段被遮挡,所以需要滚动到可见区域 */ $form->dom->firstAssignTo->scrollToElement(); diff --git a/module/execution/test/ui/story.php b/module/execution/test/ui/story.php index 463b6c6958..8e1d5e857d 100755 --- a/module/execution/test/ui/story.php +++ b/module/execution/test/ui/story.php @@ -132,6 +132,7 @@ $team->gen(6); $tester = new storyTester(); $tester->login(); +$tester->open(); /* 标签统计 */ r($tester->checkTab('allTab', '15')) && p('status,message') && e('SUCCESS,allTab下显示条数正确'); //检查全部标签下显示条数 From 2c60a1028e29d9ff4f54361709c80bec40350ff9 Mon Sep 17 00:00:00 2001 From: yulujie Date: Tue, 28 Oct 2025 13:15:11 +0800 Subject: [PATCH 4/7] *[uitest] Modify waittime. --- module/task/test/lib/ui/closetask.ui.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/task/test/lib/ui/closetask.ui.class.php b/module/task/test/lib/ui/closetask.ui.class.php index c2080c0c3a..4cde08fb66 100644 --- a/module/task/test/lib/ui/closetask.ui.class.php +++ b/module/task/test/lib/ui/closetask.ui.class.php @@ -23,7 +23,7 @@ class closeTaskTester extends tester $form->dom->closeBtn->click(); $form->wait(1); $form->dom->submitBtn->click(); - $form->wait(1); + $form->wait(2); if($form->dom->taskStatus->getText() != $this->lang->task->statusList->closed) return $this->failed('关闭任务后状态错误'); return $this->success('关闭任务成功'); } From a4a65e9d7ad043912f882dc2d5739b60a46e8597 Mon Sep 17 00:00:00 2001 From: yulujie Date: Tue, 28 Oct 2025 14:08:58 +0800 Subject: [PATCH 5/7] *[uitest] Modify waittime. --- .../execution/test/lib/ui/story.ui.class.php | 34 +++++-------------- 1 file changed, 9 insertions(+), 25 deletions(-) diff --git a/module/execution/test/lib/ui/story.ui.class.php b/module/execution/test/lib/ui/story.ui.class.php index c972add276..d3d41f84c6 100755 --- a/module/execution/test/lib/ui/story.ui.class.php +++ b/module/execution/test/lib/ui/story.ui.class.php @@ -27,8 +27,9 @@ class storyTester extends tester public function checkTab($tab, $expectNum) { $form = $this->loadPage(); - $form->dom->$tab->click(); $form->wait(1); + $form->dom->$tab->click(); + $form->wait(3); if($form->dom->num->getText() == $expectNum) return $this->success($tab . '下显示条数正确'); return $this->failed($tab . '下显示条数不正确'); } @@ -43,12 +44,7 @@ class storyTester extends tester public function unlinkStory() { $form = $this->loadPage(); - /* 确保全部标签高亮 */ - if($form->dom->allTab->attr('class') != 'active') - { - $form->dom->allTab->click(); - $form->wait(2); - } + $form->wait(1); $name = $form->dom->firstName->getText(); $form->dom->firstUnlinkBtn->click(); $form->wait(1); @@ -71,12 +67,9 @@ class storyTester extends tester public function batchUnlinkStory() { $form = $this->loadPage(); - /* 确保全部标签高亮 */ - if($form->dom->allTab->attr('class') != 'active') - { - $form->dom->allTab->click(); - $form->wait(2); - } + $form->dom->allTab->click(); + $form->wait(3); + $name = $form->dom->firstName->getText(); $form->dom->firstCheckbox->click(); $form->wait(1); @@ -150,12 +143,8 @@ class storyTester extends tester public function assignTo($user) { $form = $this->loadPage(); - /* 确保全部标签高亮 */ - if($form->dom->allTab->attr('class') != 'active') - { - $form->dom->allTab->click(); - $form->wait(2); - } + $form->dom->allTab->click(); + $form->wait(3); $form->dom->firstAssignTo->click(); $form->wait(1); $form->dom->assignedTo->picker($user); @@ -181,12 +170,7 @@ class storyTester extends tester public function batchAssignTo() { $form = $this->loadPage(); - /* 确保全部标签高亮 */ - if($form->dom->allTab->attr('class') != 'active') - { - $form->dom->allTab->click(); - $form->wait(2); - } + $form->wait(1); $form->dom->firstCheckbox->click(); $form->wait(1); $form->dom->batchAssignBtn->click(); From 86e81447df49339cb76d70c292a61dd56ee4367b Mon Sep 17 00:00:00 2001 From: yulujie Date: Tue, 28 Oct 2025 14:16:02 +0800 Subject: [PATCH 6/7] * [uitest] Modify waittime. --- module/tree/test/lib/ui/browse.ui.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/tree/test/lib/ui/browse.ui.class.php b/module/tree/test/lib/ui/browse.ui.class.php index 18352822ee..5fb9e864c9 100755 --- a/module/tree/test/lib/ui/browse.ui.class.php +++ b/module/tree/test/lib/ui/browse.ui.class.php @@ -126,7 +126,7 @@ class browseTester extends tester $form->wait(1); if($form->dom->modalText->getText() != $this->lang->tree->confirmDelete) return $this->failed('删除模块提示信息错误'); $form->dom->modalConfirm->click(); - $form->wait(1); + $form->wait(2); if($form->dom->lastChildModule->getText() == $moduleName) return $this->failed('删除模块失败'); return $this->success('删除模块成功'); From ed25fb74916d793b7ac655ee52527a3e8c1ad920 Mon Sep 17 00:00:00 2001 From: yulujie Date: Tue, 28 Oct 2025 14:20:35 +0800 Subject: [PATCH 7/7] * [uitest] Add details. --- module/tree/test/ui/browse.php | 47 ++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/module/tree/test/ui/browse.php b/module/tree/test/ui/browse.php index 55fdcd9401..ee640c82a3 100755 --- a/module/tree/test/ui/browse.php +++ b/module/tree/test/ui/browse.php @@ -5,6 +5,53 @@ title=维护产品模块 timeout=0 cid=1 + +- 执行tester模块的createModule方法,参数是' '▫ + - 最终测试状态 @SUCCESS + - 测试结果 @创建模块时模块名包含空格,提示正确 +- 执行tester模块的createModule方法,参数是'模块1'▫ + - 最终测试状态 @SUCCESS + - 测试结果 @创建模块成功 +- 执行tester模块的createModule方法,参数是'模块1', true▫ + - 最终测试状态 @SUCCESS + - 测试结果 @创建模块时模块已存在,提示正确 +- 执行tester模块的createModule方法,参数是'模块2'▫ + - 最终测试状态 @SUCCESS + - 测试结果 @创建模块成功 +- 执行tester模块的createChildModule方法,参数是' '▫ + - 最终测试状态 @SUCCESS + - 测试结果 @创建子模块时子模块名包含空格,提示正确 +- 执行tester模块的createChildModule方法,参数是'子模块1'▫ + - 最终测试状态 @SUCCESS + - 测试结果 @创建子模块成功 +- 执行tester模块的createChildModule方法,参数是'模块2'▫ + - 最终测试状态 @SUCCESS + - 测试结果 @创建子模块成功 +- 执行tester模块的createChildModule方法,参数是'子模块1', true▫ + - 最终测试状态 @SUCCESS + - 测试结果 @创建子模块时子模块已存在,提示正确 +- 执行tester模块的editModule方法,参数是''▫ + - 最终测试状态 @SUCCESS + - 测试结果 @编辑模块时模块为空,提示正确 +- 执行tester模块的editModule方法,参数是' '▫ + - 最终测试状态 @SUCCESS + - 测试结果 @编辑模块时模块为空,提示正确 +- 执行tester模块的editModule方法,参数是'模块2'▫ + - 最终测试状态 @SUCCESS + - 测试结果 @编辑模块时模块已存在,提示正确 +- 执行tester模块的editModule方法,参数是'编辑模块1'▫ + - 最终测试状态 @SUCCESS + - 测试结果 @编辑模块成功 +- 执行tester模块的copyModule方法,参数是array▫ + - 最终测试状态 @SUCCESS + - 测试结果 @复制模块时所选产品下没有模块,提示正确 +- 执行tester模块的copyModule方法,参数是array▫ + - 最终测试状态 @SUCCESS + - 测试结果 @复制模块成功 +- 执行tester模块的deleteModule方法▫ + - 最终测试状态 @SUCCESS + - 测试结果 @删除模块成功 + */ chdir(__DIR__);