Browse through the questions and answers listed below or filter and sort to narrow down your results.
1
answers
0
votes
11
views
asked 5 days ago
0
answers
0
votes
12
views
asked 16 days ago
How can I increase the number of devices that you can include in a test run in DeviceFarm?
I found this on DeviceFarm documentation: https://docs.aws.amazon.com/devicefarm/latest/developerguide/limits.html
*There is no limit to the number of devices that you can include in a test run. However, the maximum number of devices that Device Farm will test simultaneously during a test run is five. (This number can be increased upon request.)*
How can I increase the number of devices? It doesn't specify where or how to request it...
I basically need this to run more test in parallel using the metered payment plan. Right now even if we have multiple tests making requests on the test project in device farm, only 5 tests are executed at a time, the remaining are pending.
Accepted AnswerAWS Device Farm
1
answers
0
votes
15
views
asked a month ago
Is it possible to divide test suite to run tests in parallel?
Suppose I have 50 tests in my suite and 5 devices in my device pool. Instead of running all 50 tests on each device, is it possible to run 10 tests on each device? I want to reduce the run time of our test suite.
Accepted AnswerAWS Device Farm
1
answers
0
votes
15
views
asked 2 months ago
Device Farm test setup fails due to 'ascii' codec can't decode byte
I am trying to run Appium Python tests for Android devices. However, my test setup fails with the following error: 'ascii' codec can't decode byte 0xcc in position 58: ordinal not in range(128). My tests run locally just fine, and from the limited information in the logs here I'm unable to decipher where the problem lies. What steps can I take to troubleshoot this issue?
Entirety of test setup log is below:
```
[{"attachment_id": null, "parent_id": null, "timestamp": "2022-04-12T23:02:46.018578Z", "level": "Info", "pid": 3106, "data": "Starting Setup Suite", "source": "Harness", "tag": null, "subtype": "Text", "tid": 3111, "type": "Message", "id": 13},
{"attachment_id": null, "parent_id": null, "timestamp": "2022-04-12T23:02:46.019150Z", "level": "Info", "pid": 3106, "data": "Starting Setup Test", "source": "Harness", "tag": null, "subtype": "Text", "tid": 3111, "type": "Message", "id": 15},
{"attachment_id": null, "parent_id": null, "timestamp": "2022-04-12T23:02:48.555726Z", "level": "Debug", "pid": 31496, "data": "Binder ioctl to enable oneway spam detection failed: Invalid argument", "source": "Device", "tag": "ProcessState", "subtype": "Text", "tid": 31496, "type": "Message", "id": 16},
{"attachment_id": null, "parent_id": null, "timestamp": "2022-04-12T23:02:52.875809Z", "level": "Errored", "pid": 3106, "data": "'ascii' codec can't decode byte 0xcc in position 58: ordinal not in range(128)", "source": "Harness", "tag": null, "subtype": "Text", "tid": 3127, "type": "Message", "id": 17},
{"attachment_id": null, "parent_id": null, "timestamp": "2022-04-12T23:02:53.334113Z", "level": "Errored", "pid": 3106, "data": "'ascii' codec can't decode byte 0xcc in position 58: ordinal not in range(128)", "source": "Harness", "tag": null, "subtype": "Text", "tid": 3111, "type": "Message", "id": 22},
{"attachment_id": null, "parent_id": null, "timestamp": "2022-04-12T23:02:53.334757Z", "level": "Info", "pid": 3106, "data": "Finished Setup Test", "source": "Harness", "tag": null, "subtype": "Text", "tid": 3111, "type": "Message", "id": 24},
{"attachment_id": null, "parent_id": null, "timestamp": "2022-04-12T23:02:53.336363Z", "level": "Info", "pid": 3106, "data": "Finished Setup Suite", "source": "Harness", "tag": null, "subtype": "Text", "tid": 3111, "type": "Message", "id": 27}]
```
Accepted AnswerAWS Device Farm
2
answers
0
votes
7
views
asked 3 months ago
DVTErrorPresenter: Unable to load simulator devices in Device Farm
Hello everyone, I'm getting this error to try run ios tests on device farm:
DVTErrorPresenter: Unable to load simulator devices in Device Farm
Used tools:
Appium version: 1.22.0
ios version: 15.x
Link of run: https://us-west-2.console.aws.amazon.com/devicefarm/home?region=us-east-2#/mobile/projects/a5325ea5-f090-4ac3-aabb-dcec96a31cd4/runs/7aba46fc-69db-4e2f-8170-93cb0115639d/jobs/00000
Logs:
```
[DeviceFarm] export TEST_PLATFORM=ios
[DeviceFarm] export EXECUTION_ENVIRONMENT=AWS
[DeviceFarm] export SLACK_SOS_FILE=/tmp/slackMSG.tmp
[DeviceFarm] rm -f $SLACK_SOS_FILE
[DeviceFarm] echo "Start Appium TestNG test"
Start Appium TestNG test
[DeviceFarm] java -Djdk.tls.client.protocols=TLSv1.2 -javaagent:dependency-jars/aspectjweaver-1.9.5.jar -Dallure.results.directory=/tmp/allure-results org.testng.TestNG -d $DEVICEFARM_LOG_DIR/test-output testng.xml
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.vmplugin.v7.Java7$1 (file:/private/tmp/scratchXJtgqt.scratch/test-packagebB21R6/dependency-jars/groovy-2.5.8.jar) to constructor java.lang.invoke.MethodHandles$Lookup(java.lang.Class,int)
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.vmplugin.v7.Java7$1
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
[INFO ] ***oo try to write fileName: /tmp/slackMSG.tmp text: https://us-west-2.console.aws.amazon.com/devicefarm/home?region=us-west-2#/projects/a5325ea5-f090-4ac3-aabb-dcec96a31cd4/runs/7aba46fc-69db-4e2f-8170-93cb0115639d [com.mach.core.util.FileUtil.writeFile(FileUtil.java:44)] [13:26:27,817] [0]
[INFO ] ***oo capabilities from java: Capabilities {appPushTimeout: 1000, automationName: XCUITest, deviceName: 00008110-001A75102604801E, newCommandTimeout: 420, platformName: iOS, platformVersion: 15.1, updatedWDABundleId: com.facebook.WebDriverAgent..., useNewWDA: true} [com.mach.core.config.driver.AppiumDriverFactory.getIOSCapabilities(AppiumDriverFactory.java:165)] [13:26:27,963] [146]
[ERROR] ***** check the capabilities, e: [com.mach.core.config.driver.AppiumDriverFactory.getIOSDriver(AppiumDriverFactory.java:122)] [13:27:20,945] [53128]
org.openqa.selenium.SessionNotCreatedException: Unable to create a new remote session. Please check the server log for more details. Original error: An unknown server-side error occurred while processing the command. Original error: Unable to launch WebDriverAgent because of xcodebuild failure: xcodebuild failed with code 65
xcodebuild error message:
2022-02-02 13:27:10.270 xcodebuild[1191:8716] DVTErrorPresenter: Unable to load simulator devices.
Domain: DVTCoreSimulatorAdditionsErrorDomain
Code: 3
Failure Reason: The version of the CoreSimulator framework installed on this Mac is out-of-date and not supported by this version of Xcode.
Recovery Suggestion: Please ensure that you have installed all available updates to your Mac's software, and that you are running the most recent version of Xcode supported by macOS.
--
CoreSimulator is out of date. Current version (757.5.0) is older than build version (776.3.0).
Domain: DVTCoreSimulatorAdditionsErrorDomain
Code: 3
--
2022-02-02 13:27:10.270 xcodebuild[1191:8716] iOSSimulator: [SimServiceContext sharedServiceContextForDeveloperDir:error:] returned nil (Error Domain=DVTCoreSimulatorAdditionsErrorDomain Code=3 "CoreSimulator is out of date. Current version (757.5.0) is older than build version (776.3.0)." UserInfo={NSLocalizedDescription=CoreSimulator is out of date. Current version (757.5.0) is older than build version (776.3.0).}). Simulator device support disabled.
Command line invocation:
/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild test-without-building -project /usr/local/avm/versions/1.22.0/node_modules/appium/node_modules/appium-webdriveragent/WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -derivedDataPath /tmp/scratchXJtgqt.scratch/DerivedDatakuxIoL -destination id=00008110001A75102604801E IPHONEOS_DEPLOYMENT_TARGET=15.1 GCC_TREAT_WARNINGS_AS_ERRORS=0 COMPILER_INDEX_STORE_ENABLE=NO
User defaults from command line:
IDEDerivedDataPathOverride = /tmp/scratchXJtgqt.scratch/DerivedDatakuxIoL
IDEPackageSupportUseBuiltinSCM = YES
Build settings from command line:
COMPILER_INDEX_STORE_ENABLE = NO
GCC_TREAT_WARNINGS_AS_ERRORS = 0
IPHONEOS_DEPLOYMENT_TARGET = 15.1
2022-02-02 13:27:12.088 xcodebuild[1191:8717] DVTAssertions: Warning in /Library/Caches/com.apple.xbs/Sources/DVTiOSFrameworks/DVTiOSFrameworks-19114/DTDeviceKitBase/DTDKRemoteDeviceData.m:373
Details: (null) deviceType from 00008110001A75102604801E was NULL when -platform called.
Object: <DTDKMobileDeviceToken: 0x7fbc90f8c120>
Method: -platform
Thread: <NSThread: 0x7fbc8ec124e0>{number = 3, name = (null)}
Please file a bug at https://feedbackassistant.apple.com with this warning message and any useful information you can provide.
2022-02-02 16:27:19.723982-0500 WebDriverAgentRunner-Runner[417:15887] Running tests...
2022-02-02 16:27:19.726461-0500 WebDriverAgentRunner-Runner[417:15887] Unable to load configuration data from specified path /; error: The file “System” couldn’t be opened.
2022-02-02 16:27:19.726518-0500 WebDriverAgentRunner-Runner[417:15887] XCTRunner Arguments: (
"/var/containers/Bundle/Application/3B1C00BC-8B46-437E-923A-C3A20F6DA262/WebDriverAgentRunner-Runner.app/WebDriverAgentRunner-Runner"
)
2022-02-02 16:27:19.726621-0500 WebDriverAgentRunner-Runner[417:15887] XCTRunner Environment: {
"CA_ASSERT_MAIN_THREAD_TRANSACTIONS" = 0;
"CA_DEBUG_TRANSACTIONS" = 0;
"CFFIXED_USER_HOME" = "/private/var/mobile/Containers/Data/Application/3CE450E6-4DEF-46F3-BB9C-ACB104BA7E97";
HOME = "/private/var/mobile/Containers/Data/Application/3CE450E6-4DEF-46F3-BB9C-ACB104BA7E97";
LOGNAME = mobile;
"MJPEG_SERVER_PORT" = "";
"MTC_CRASH_ON_REPORT" = 1;
NSUnbufferedIO = YES;
"OS_ACTIVITY_DT_MODE" = YES;
PATH = "/usr/bin:/bin:/usr/sbin:/sbin";
"RUN_DESTINATION_DEVICE_ECID" = 7447061612232734;
"RUN_DESTINATION_DEVICE_NAME" = PDX640550096;
"RUN_DESTINATION_DEVICE_PLATFORM_IDENTIFIER" = "com.apple.platform.iphoneos";
"RUN_DESTINATION_DEVICE_UDID" = 00008110001A75102604801E;
SHELL = "/bin/sh";
"SQLITE_ENABLE_THREAD_ASSERTIONS" = 1;
TMPDIR = "/private/var/mobile/Containers/Data/Application/3CE450E6-4DEF-46F3-BB9C-ACB104BA7E97/tmp/";
"UPGRADE_TIMESTAMP" = 1643837138604;
USER = mobile;
"USE_PORT" = 8100;
"WDA_PRODUCT_BUNDLE_IDENTIFIER" = "com.facebook.WebDriverAgentRunner";
XCTestBundlePath = "PlugIns/WebDriverAgentRunner.xctest";
XCTestConfigurationFilePath = "";
XCTestSessionIdentifier = "88DCC108-B122-4D1C-84E4-DA839C9021CD";
"XPC_FLAGS" = 0x0;
"XPC_SERVICE_NAME" = "UIKitApplication:com.apple.test.WebDriverAgentRunner-Runner[9ca9][rb-legacy]";
"__CF_USER_TEXT_ENCODING" = "0x1F5:0:0";
}
2022-02-02 13:27:19.643 xcodebuild[1191:8639] [MT] IDETestOperationsObserverDebug: 6.524 elapsed -- Testing started completed.
2022-02-02 13:27:19.643 xcodebuild[1191:8639] [MT] IDETestOperationsObserverDebug: 0.000 sec, +0.000 sec -- start
2022-02-02 13:27:19.643 xcodebuild[1191:8639] [MT] IDETestOperationsObserverDebug: 6.524 sec, +6.524 sec -- end
Test session results, code coverage, and logs:
/tmp/scratchXJtgqt.scratch/DerivedDatakuxIoL/Logs/Test/Test-WebDriverAgentRunner-2022.02.02_13-27-13--0800.xcresult
Testing failed:
WebDriverAgentRunner:
WebDriverAgentRunner-Runner (417) encountered an error (Early unexpected exit, operation never finished bootstrapping - no restart will be attempted. (Underlying Error: The test runner exited with code 1 before checking in. If you believe this error represents a bug, please attach the result bundle at /tmp/scratchXJtgqt.scratch/DerivedDatakuxIoL/Logs/Test/Test-WebDriverAgentRunner-2022.02.02_13-27-13--0800.xcresult))
** TEST EXECUTE FAILED **
Testing started. Make sure you follow the tutorial at https://github.com/appium/appium-xcuitest-driver/blob/master/docs/real-device-config.md. Try to remove the WebDriverAgentRunner application from the device if it is installed and reboot the device.
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'ip-192-168-10-5.us-west-2.compute.internal', ip: 'fe80:0:0:0:14c0:e6ff:c23e:5cb3%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.16', java.version: '12.0.2'
Driver info: driver.version: IOSDriver
...
```
Accepted AnswerAWS Device Farm
1
answers
0
votes
20
views
asked 5 months ago
Appium chromedriver error: "Process didn't end after 10000ms" after switching to webview context
We are testing an Android Cordova application in Device Farm using Appium. We use the hack from here to get the chromedriver working on AWS: https://forums.aws.amazon.com/thread.jspa?messageID=983382󰅖 . This has been working well until recently. We are now getting this error after switching to the webview context:
`[0-0] [90m2022-01-14T16:27:50.188Z[39m [31mERROR[39m [97mwebdriver[39m: Request failed with status 500 due to unknown error: An unknown server-side error occurred while processing the command. Original error: Process didn't end after 10000ms (cmd: '/opt/chromedriver/linux/65/chromedriver --url-base\=wd/hub --port\=8000 --adb-port\=5037 --verbose')
[0-0] Error in "chat landscape can send chat messages in landscape"
UnknownError: An unknown server-side error occurred while processing the command. Original error: Process didn't end after 10000ms (cmd: '/opt/chromedriver/linux/65/chromedriver --url-base\=wd/hub --port\=8000 --adb-port\=5037 --verbose')`
Restarting the unchanged code that has been working before now keeps returning this error. The only thing that changed is that we bought a Device slot on Device Farm. Does anybody have any clues?
Accepted AnswerAWS Device Farm
1
answers
0
votes
19
views
asked 5 months ago
1
answers
0
votes
22
views
asked 6 months ago
Device Pool - MODEL NOT_IN Rule not working
I'm creating a device pool with AWS CLI and want to exclude 2 models, but they keep showing in the created pool, any advice? Thanks
Note: I've also tried excluding with MANUFACTURER, but it does not work either.
These are the rules I'm using:
```
[
{
"attribute": "AVAILABILITY",
"operator": "EQUALS",
"value": "\"HIGHLY_AVAILABLE\""
},
{
"attribute": "PLATFORM",
"operator": "EQUALS",
"value": "\"ANDROID\""
},
{
"attribute": "FORM_FACTOR",
"operator": "EQUALS",
"value": "\"PHONE\""
},
{
"attribute": "OS_VERSION",
"operator": "GREATER_THAN_OR_EQUALS",
"value": "\"8.0.0\""
},
{
"attribute": "OS_VERSION",
"operator": "LESS_THAN_OR_EQUALS",
"value": "\"11\""
},
{
"attribute": "MODEL",
"operator": "NOT_IN",
"value": "[\"OnePlus One\",\"LG Stylo 5\"]"
}
]
```
Accepted AnswerAWS Device Farm
2
answers
0
votes
8
views
asked 6 months ago
AWS Device Farm Capabilities
Can I use AWS Device Farm to test applications on PCs i.e. Windows PC across Internet explorer, Chrome Browser, Edge Etc? Can I use this on Apple PCs to test on Safari ? What other platforms / browsers are supported apart from the mobile platforms listed in the documentations.
is the product SOC compliant ? if not are there any mitigating controls to put in place for using this.
Accepted AnswerAWS Device Farm
1
answers
0
votes
35
views
asked 7 months ago
INSTALL_PARSE_FAILED_NO_CERTIFICATES error on Android device
Hello,
We're getting INSTALL_PARSE_FAILED_NO_CERTIFICATES error when we launch a test run with our AndroidSDK-30 app through the device farm. The error occur during the Setup phase no matter which kind of Android devices we select:
Failed to install com.** - INSTALL_PARSE_FAILED_NO_CERTIFICATES: Scanning Failed.: No signature found in package of version 2 or newer for package com.**
Any idea of what we could be doing wrong?
For info, we don't have any issues to install the apk on our own devices.
Thanks,
Martin
Accepted AnswerAWS Device Farm
1
answers
0
votes
37
views
asked 8 months ago
Update Node to LTS
According to DF documentation, "_Device Farm supports all Appium server versions 1.6.5 and above._" Appium 1.21 & 1.22 requires at least Node v12, but the current Node version in DF is set to v10. How do I update the version or set it to a specific version? I tried "n lts" in the yaml file, but got "mkdir: cannot create directory ‘/usr/local/n’: Permission denied".
There are fixes in 1.21/1.22 that we need for mobile testing.
Accepted AnswerAWS Device Farm
3
answers
0
votes
13
views
asked 8 months ago
Device Pool - how to exclude 32 bit devices on Android
I have a pool definition for Android phones and I am getting Moto G7 Play devices moderately frequently of late and our app requires 64 bit devices and so fails to install. Need advice on how to avoid 32 bit devices.
Accepted AnswerAWS Device Farm
1
answers
0
votes
6
views
asked a year ago
Test duration is much longer when submit the test by AmazonDeviceFarmClient
The test durantion is about 1 minute when I create the test by AWS console, refer to
https://us-west-2.console.aws.amazon.com/devicefarm/home?#/projects/6c1de135-24c6-45d5-aaad-855d2395585b/runs/50367d4a-f297-436c-8b76-ded911849cb6/jobs/00000
But, the same test took more than 10 minutes when I create it by AmazonDeviceFarmClient, refer to
https://us-west-2.console.aws.amazon.com/devicefarm/home#/projects/6c1de135-24c6-45d5-aaad-855d2395585b/runs/78f14d4b-f7e9-454a-9b21-40be1661ce75/jobs/00000
From the log I can see the test passed at 47s but somehow took 10 minutes to finish. Is there anything I did wrong?
Thanks
Harness 00:31.931 2506 Info Finished Setup Test
Harness 00:31.943 2506 Info Finished Setup Suite
Harness 00:31.944 2506 Info Starting Tests Suite
Harness 00:31.945 2506 Info Starting Tests
Harness 00:47.615 2506 Passed Tests passed
Harness 05:51.741 2506 Info Finished Tests
Harness 05:51.742 2506 Info Finished Tests Suite
Harness 05:51.747 2506 Info Starting Teardown Suite
Harness 05:51.748 2506 Info Starting Teardown Test
Harness 11:17.347 2506 Passed Successful test lifecycle of Teardown Test
Harness 11:17.347 2506 Info Finished Teardown Test
Harness 11:17.348 2506 Info Finished Teardown Suite
Accepted AnswerAWS Device Farm
2
answers
0
votes
6
views
asked a year ago
WebDriver Instance for mobile web testing
I'm working on adapting functional tests of a web to be able to use Device Farm as the device pool for testing in mobile devices. The tests are written in Java, using TestNG and Appium, and i have no problems launching them in desktop browsers locally or in my android phone through a local installation of Appium.
I have adapted the pom.xml following the guidelines in <https://docs.aws.amazon.com/devicefarm/latest/developerguide/test-types-appium.html> , but i haven't found anything in the documentation stating how i should instantiate WebDriver. I have also reviewed and tested with the method to instantiate it as a RemoteWebDriver using the sdk like this:
String myProjectARN = "arn:evicefarm:us-west-2:XXXXXXXXXX:testgrid-project:XXXXXXXX";
DeviceFarmClient client = DeviceFarmClient.builder()
.region(Region.US_WEST_2)
.build();
CreateTestGridUrlRequest request = CreateTestGridUrlRequest.builder()
.expiresInSeconds(300)
.projectArn(myProjectARN)
.build();
CreateTestGridUrlResponse response = client.createTestGridUrl(request);
URL testGridUrl = new URL(response.url());
WebDriver driver = new RemoteWebDriver(testGridUrl, DesiredCapabilities.chrome());
This works fine for testing in desktop environments, but if i try to adapt it to android environment, i get the following error:
\[TestNG] software.amazon.awssdk.services.devicefarm.model.DeviceFarmException: User: arn:aws:sts::XXXXXXXXXXXXX:assumed-role/EC2DeviceHostRole/XXXXXXXXXXXXXXXX is not authorized to perform: devicefarm:CreateTestGridUrl on resource: arn:aws:devicefarm:us-west-2:XXXXXXXXXXXXX:project:XXXXXXXXXXXXXXXXXXXXXXXXX (Service: DeviceFarm, Status Code: 400, Request ID: XXXXXXXXXXXXXXXXXXXXXX, Extended Request ID: null)
How should WebDriver be instantiated for mobile tests? My goal is to run this tests both in Android and iOS devices.
Accepted AnswerAWS Device Farm
2
answers
0
votes
23
views
asked a year ago
Java8 for iOS Appium Testng
hi, Could you share sample custom mode settings script that install jdk1.8 and do the export with me?
I tried this one but it didnt work.
https://us-west-2.console.aws.amazon.com/devicefarm/home?region=us-east-2#/projects/e3de778f-4d0b-45a3-be78-fada79567b90/runs/1929a132-9351-4c63-a0b7-064db540379a/jobs/00000
Thanks,
Edited by: sbuyuran on Jan 25, 2021 10:30 PM
Accepted AnswerAWS Device Farm
1
answers
0
votes
5
views
asked a year ago
Test sharding in aws
Hello,
I have a test suite that takes more than 150 minutes to complete both in android and ios,
and I wanted to run my tests in parallel (running different tests from the same test suite in multiple devices)
I bought two slots (one for android and one for ios), so would it be possible for me to implement test sharding?
or is there any other strategy I'm not aware of? because a lot of my tests aren't run since they exceed the time limit of 150 minutes per device.
Thank you very much
Edited by: aguspeq on Jan 16, 2021 10:40 AM
Accepted AnswerAWS Device Farm
1
answers
0
votes
12
views
asked a year ago
iOS app no longer installs
Our tests have started to break because the app fails to install on iOS
```
ios-deploy-orig[1178:7239] [ !! ] Can't access app path '/tmp/2019829-1117-wn0bdn.a3byb/Payload/Foo Bar.app' : No such file or directory
```
Our app name has a space in it (changed here for privacy), which appears not to be handled by the version of ios-deploy AWS has installed? Can you confirm which version of ios-deploy is installed?
NOTE:- We've tried re-running tests with the exact same artefacts (.ipa, test bundle .zip and Test Spec .yml) which previously passed (last week), but now result in the above failure. Tried on multiple devices too.
Logs:
https://us-west-2.console.aws.amazon.com/devicefarm/home?region=us-east-1#/projects/9d1d510c-bf2e-448d-864d-89e7540735f9/runs/80e84376-20a8-49bb-bc5a-92f88d5ddbcf/jobs/00000
Edited by: rhydiant on Sep 30, 2019 4:23 PM
Edited by: rhydiant on Sep 30, 2019 5:58 PM
Accepted AnswerAWS Device Farm
2
answers
0
votes
5
views
asked 3 years ago