summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/meson.build25
-rwxr-xr-xtest/test1.py12
-rwxr-xr-xtest/test2.py14
-rwxr-xr-xtest/test6.py10
-rwxr-xr-xtest/test7.py12
-rwxr-xr-xtest/testBookmarksMenu.py24
-rw-r--r--test/testCommon.py36
-rwxr-xr-xtest/testEditMenu.py45
-rwxr-xr-xtest/testEncryptedFile.py33
-rwxr-xr-xtest/testFileMenu.py45
-rwxr-xr-xtest/testFileReloading.py27
-rwxr-xr-xtest/testGoMenu.py30
-rwxr-xr-xtest/testHelpMenu.py28
-rwxr-xr-xtest/testWrongFileExtension.py18
-rwxr-xr-xtest/testZoom.py26
15 files changed, 355 insertions, 30 deletions
diff --git a/test/meson.build b/test/meson.build
new file mode 100644
index 00000000..edf23189
--- /dev/null
+++ b/test/meson.build
@@ -0,0 +1,25 @@
+test_cases = [
+ 'testFileMenu.py',
+ 'testEditMenu.py',
+ 'testHelpMenu.py',
+ 'testZoom.py',
+ 'testGoMenu.py',
+ 'testBookmarksMenu.py',
+ 'testEncryptedFile.py',
+ 'testFileReloading.py',
+ 'testWrongFileExtension.py'
+]
+
+foreach case : test_cases
+ test_script = find_program(case)
+
+ test(
+ case,
+ test_script,
+ args: [atril.full_path()],
+ is_parallel: false,
+ depends: atril,
+ workdir: join_paths(prefix, bindir),
+ timeout: 120,
+ )
+endforeach
diff --git a/test/test1.py b/test/test1.py
index 97db085c..f485b3dd 100755
--- a/test/test1.py
+++ b/test/test1.py
@@ -2,27 +2,23 @@
# This test opens the interface and just clicks around a bit.
-import os
-import dogtail.config
-dogtail.config.config.logDebugToStdOut = True
-dogtail.config.config.logDebugToFile = False
+from testCommon import pushButton
from dogtail.procedural import *
-os.environ['LANG']='C'
run('atril')
# Test file->open
focus.application('atril')
click('File', roleName='menu')
click('Open…', roleName='menu item')
-click('Cancel', roleName='push button')
+click('Cancel', roleName=pushButton)
# Toolbar editor
focus.application('atril')
click('Edit', roleName='menu')
click('Toolbar', roleName='menu item')
-click('Close', roleName='push button')
+click('Close', roleName=pushButton)
# About dialog
focus.application('atril')
@@ -30,7 +26,7 @@ click('Help', roleName='menu')
click('About', roleName='menu item')
click('Credits', roleName='toggle button')
click('Credits', roleName='toggle button')
-click('Close', roleName='push button')
+click('Close', roleName=pushButton)
# Close atril
focus.application('atril')
diff --git a/test/test2.py b/test/test2.py
index d690edbb..b4f3a5c8 100755
--- a/test/test2.py
+++ b/test/test2.py
@@ -3,26 +3,26 @@
# This test opens a password encrypted file and tries to unlock it.
import os
-os.environ['LANG']='C'
-srcdir = os.environ['srcdir']
-
+from testCommon import pushButton
from dogtail.procedural import *
+srcdir = os.environ['srcdir']
+
run('atril', arguments=' '+srcdir+'/test-encrypt.pdf')
# Try an incorrect password first
focus.application('atril')
type('wrong password')
-click('Unlock Document', roleName='push button')
+click('Unlock Document', roleName=pushButton)
focus.dialog('Enter password')
-click('Cancel', roleName='push button')
+click('Cancel', roleName=pushButton)
# Try again with the correct password
focus.frame('test-encrypt.pdf — Password Required')
-click('Unlock Document', roleName='push button')
+click('Unlock Document', roleName=pushButton)
focus.dialog('Enter password')
type('Foo')
-click('Unlock Document', roleName='push button')
+click('Unlock Document', roleName=pushButton)
# Close atril
focus.application('atril')
diff --git a/test/test6.py b/test/test6.py
index a2687d08..30367fe2 100755
--- a/test/test6.py
+++ b/test/test6.py
@@ -3,15 +3,11 @@
# Test printing
import os
-import dogtail.config
-dogtail.config.config.logDebugToStdOut = True
-dogtail.config.config.logDebugToFile = False
+from testCommon import pushButton
+from dogtail.procedural import *
-os.environ['LANG']='C'
srcdir = os.environ['srcdir']
-from dogtail.procedural import *
-
recent_used = os.path.expanduser('~/.local/share/recently-used.xbel')
recent_used_orig = recent_used + '.orig'
@@ -31,7 +27,7 @@ click('Print…', roleName='menu item')
click('Print to File', roleName='table cell', raw=True)
click('Postscript', roleName='radio button', raw=True)
-click('Print', roleName='push button')
+click('Print', roleName=pushButton)
statinfo = os.stat (ps_file)
if statinfo.st_size > 100000:
diff --git a/test/test7.py b/test/test7.py
index 03792c6c..f0b71582 100755
--- a/test/test7.py
+++ b/test/test7.py
@@ -3,16 +3,12 @@
# Test printing
import os
-import dogtail.config
-import time
-dogtail.config.config.logDebugToStdOut = True
-dogtail.config.config.logDebugToFile = False
-
-os.environ['LANG']='C'
-srcdir = os.environ['srcdir']
+from testCommon import pushButton
from dogtail.procedural import *
+srcdir = os.environ['srcdir']
+
run('atril', arguments=' '+srcdir+'/test-page-labels.pdf')
focus.application('atril')
@@ -27,7 +23,7 @@ focus.dialog('Print')
click('Page Setup', roleName='page tab', raw=True)
click('All sheets')
click('Odd sheets', roleName='menu item')
-click('Preview', roleName='push button')
+click('Preview', roleName=pushButton)
keyCombo('<Alt><F4>')
# Close atril
diff --git a/test/testBookmarksMenu.py b/test/testBookmarksMenu.py
new file mode 100755
index 00000000..2f2a5324
--- /dev/null
+++ b/test/testBookmarksMenu.py
@@ -0,0 +1,24 @@
+#!/usr/bin/python3
+
+# This test opens the Bookmarks menu.
+
+from testCommon import run_app, bail
+
+from dogtail.procedural import *
+
+try:
+ run_app(file='test-links.pdf')
+
+ focus.frame('test-links.pdf')
+ click('Bookmarks', roleName='menu')
+ click('Add Bookmark', roleName='menu item')
+
+ click('Bookmarks', roleName='menu')
+ click('Page 1', roleName='menu item')
+
+ # Close
+ click('File', roleName='menu')
+ click('Close', roleName='menu item')
+
+except:
+ bail()
diff --git a/test/testCommon.py b/test/testCommon.py
new file mode 100644
index 00000000..c4aa3a0e
--- /dev/null
+++ b/test/testCommon.py
@@ -0,0 +1,36 @@
+#!/usr/bin/python3
+
+import os
+import sys
+import signal
+
+os.environ['LANG'] = 'C'
+
+# try and figure out the role name for push buttons, which changed in ATSPI 2.53
+try:
+ import gi
+ gi.require_version('Atspi', '2.0')
+ from gi.repository import Atspi
+
+ pushButton = Atspi.role_get_name(Atspi.Role.PUSH_BUTTON)
+except ImportError:
+ pushButton = 'push button'
+
+from dogtail.config import config
+config.logDebugToStdOut = True
+config.logDebugToFile = False
+
+import dogtail.procedural as dt
+
+def run_app(file=None):
+ global pid
+
+ if file is not None:
+ arguments = os.path.join(os.path.dirname(__file__), file)
+ else:
+ arguments = ''
+ pid = dt.run(sys.argv[1], arguments=arguments, appName='atril')
+
+def bail():
+ os.kill(pid, signal.SIGTERM)
+ sys.exit(1)
diff --git a/test/testEditMenu.py b/test/testEditMenu.py
new file mode 100755
index 00000000..2a8e89b5
--- /dev/null
+++ b/test/testEditMenu.py
@@ -0,0 +1,45 @@
+#!/usr/bin/python3
+
+# This test opens the Edit menu and runs through the menu items.
+
+from testCommon import run_app, bail, pushButton
+
+from dogtail.procedural import *
+
+try:
+ run_app(file='test-links.pdf')
+
+ # Begin to run through Edit options
+ focus.frame('test-links.pdf')
+ click('Edit', roleName='menu')
+
+ click('Select All', roleName='menu item')
+
+ click('Edit', roleName='menu')
+ click('Find…', roleName='menu item')
+
+ focus.frame('test-links.pdf')
+ type('link')
+ click('Find Previous', roleName=pushButton)
+
+ click('Edit', roleName='menu')
+ click('Find Next', roleName='menu item')
+
+ click('Edit', roleName='menu')
+ click('Find Previous', roleName='menu item')
+
+ click('Edit', roleName='menu')
+ click('Rotate Left', roleName='menu item')
+
+ click('Edit', roleName='menu')
+ click('Rotate Right', roleName='menu item')
+
+ click('Edit', roleName='menu')
+ click('Save Current Settings as Default', roleName='menu item')
+
+ focus.frame('test-links.pdf')
+ click('File', roleName='menu')
+ click('Close', roleName='menu item')
+
+except:
+ bail()
diff --git a/test/testEncryptedFile.py b/test/testEncryptedFile.py
new file mode 100755
index 00000000..808efac4
--- /dev/null
+++ b/test/testEncryptedFile.py
@@ -0,0 +1,33 @@
+#!/usr/bin/python3
+
+# Test opening a password encrypted file and unlocking it.
+
+from testCommon import run_app, bail, pushButton
+
+from dogtail.procedural import *
+
+try:
+
+ run_app(file='test-encrypt.pdf')
+
+ # Try an incorrect password first
+ focus.dialog('Enter password')
+ type('wrong password')
+ click('Unlock Document', roleName=pushButton)
+ focus.dialog('Enter password')
+ click('Cancel', roleName=pushButton)
+
+ # Try again with the correct password
+ focus.frame('test-encrypt.pdf — Password Required')
+ click('Unlock Document', roleName=pushButton)
+ type('Foo')
+ focus.dialog('Enter password')
+ click('Unlock Document', roleName=pushButton)
+
+ # Close Atril
+ focus.frame('test-encrypt.pdf — Dokument1')
+ click('File', roleName='menu')
+ click('Close', roleName='menu item')
+
+except:
+ bail()
diff --git a/test/testFileMenu.py b/test/testFileMenu.py
new file mode 100755
index 00000000..81723c8d
--- /dev/null
+++ b/test/testFileMenu.py
@@ -0,0 +1,45 @@
+#!/usr/bin/python3
+
+# Test that the File menu and menu items work correctly.
+
+from testCommon import run_app, bail, pushButton
+
+from dogtail.procedural import *
+
+try:
+ run_app(file='test-links.pdf')
+
+ # Open a file
+ click('File', roleName='menu')
+ click('Open…', roleName='menu item')
+ click('Cancel', roleName=pushButton)
+
+ # Save As
+ focus.frame('test-links.pdf')
+ click('File', roleName='menu')
+ click('Save As…', roleName='menu item')
+ click('Cancel', roleName=pushButton)
+
+ # Print
+ focus.frame('test-links.pdf')
+ click('File', roleName='menu')
+ click('Print…', roleName='menu item')
+ focus.dialog('Print')
+ click('Cancel', roleName=pushButton)
+
+ # Properties
+ focus.frame('test-links.pdf')
+ click('File', roleName='menu')
+ click('Properties', roleName='menu item')
+ click('Fonts', roleName='page tab')
+ click('General', roleName='page tab')
+ focus.dialog('Properties')
+ click('Close', roleName=pushButton)
+
+ # Close
+ focus.frame('test-links.pdf')
+ click('File', roleName='menu')
+ click('Close', roleName='menu item')
+
+except:
+ bail()
diff --git a/test/testFileReloading.py b/test/testFileReloading.py
new file mode 100755
index 00000000..b696c7e6
--- /dev/null
+++ b/test/testFileReloading.py
@@ -0,0 +1,27 @@
+#!/usr/bin/python3
+
+# Test reloading a document.
+
+from testCommon import run_app, bail
+
+from dogtail.procedural import *
+
+try:
+
+ run_app(file='test-page-labels.pdf')
+
+ focus.widget('page-label-entry')
+ focus.widget.text = "iii"
+ activate()
+
+ if focus.widget.text != "III":
+ click('File', roleName='menu')
+ click('Close', roleName='menu item')
+ exit (1)
+
+ # Close Atril
+ click('File', roleName='menu')
+ click('Close', roleName='menu item')
+
+except:
+ bail()
diff --git a/test/testGoMenu.py b/test/testGoMenu.py
new file mode 100755
index 00000000..3ba753b1
--- /dev/null
+++ b/test/testGoMenu.py
@@ -0,0 +1,30 @@
+#!/usr/bin/python3
+
+# This test opens the Go menu and test menu items.
+
+from testCommon import run_app, bail
+
+from dogtail.procedural import *
+
+try:
+ run_app(file='test-links.pdf')
+
+ focus.frame('test-links.pdf')
+ click('Go', roleName='menu')
+ click('Next Page', roleName='menu item')
+
+ click('Go', roleName='menu')
+ click('Previous Page', roleName='menu item')
+
+ click('Go', roleName='menu')
+ click('Last Page', roleName='menu item')
+
+ click('Go', roleName='menu')
+ click('First Page', roleName='menu item')
+
+ # Close
+ click('File', roleName='menu')
+ click('Close', roleName='menu item')
+
+except:
+ bail()
diff --git a/test/testHelpMenu.py b/test/testHelpMenu.py
new file mode 100755
index 00000000..fcbdaeb5
--- /dev/null
+++ b/test/testHelpMenu.py
@@ -0,0 +1,28 @@
+#!/usr/bin/python3
+
+# This test opens the Help menu and runs through the menu items.
+
+from testCommon import run_app, bail, pushButton
+
+from dogtail.procedural import *
+
+try:
+ run_app()
+
+ click('Help', roleName='menu')
+ click('About', roleName='menu item')
+ focus.dialog('About Atril Document Viewer')
+ click('License', roleName='toggle button')
+ click('Close', roleName=pushButton)
+
+ focus.frame('')
+ click('Help', roleName='menu')
+ click('Contents', roleName='menu item')
+
+ keyCombo('<Control>w')
+
+ focus.frame('')
+ click('File', roleName='menu')
+ click('Close', roleName='menu item')
+except:
+ bail()
diff --git a/test/testWrongFileExtension.py b/test/testWrongFileExtension.py
new file mode 100755
index 00000000..17dcc0ed
--- /dev/null
+++ b/test/testWrongFileExtension.py
@@ -0,0 +1,18 @@
+#!/usr/bin/python3
+
+# Test opening a file with wrong extenstion.
+
+from testCommon import run_app, bail
+
+from dogtail.procedural import *
+
+try:
+
+ run_app(file='test-mime.bin')
+
+ # Close Atril
+ click('File', roleName='menu')
+ click('Close', roleName='menu item')
+
+except:
+ bail()
diff --git a/test/testZoom.py b/test/testZoom.py
new file mode 100755
index 00000000..994a2ee9
--- /dev/null
+++ b/test/testZoom.py
@@ -0,0 +1,26 @@
+#!/usr/bin/python3
+
+# This test opens the View menu and test zoom features.
+
+from testCommon import run_app, bail
+
+from dogtail.procedural import *
+
+try:
+ run_app(file='test-links.pdf')
+
+ # Zoom In
+ focus.frame('test-links.pdf')
+ click('View', roleName='menu')
+ click('Zoom In', roleName='menu item')
+
+ # Zoom Out
+ click('View', roleName='menu')
+ click('Zoom Out', roleName='menu item')
+
+ # Close
+ click('File', roleName='menu')
+ click('Close', roleName='menu item')
+
+except:
+ bail()