/// <summary>
        /// Merge additional capabilities supplied by the user
        /// along with the default capabilities. .see AdditionalDriverOptions
        /// </summary>
        /// <param name="options">.seealso AdditionalDriverOptions</param>
        public void MergeCapabilities(RunParameterUpdater options)
        {
            if (options == null)
            {
                return;
            }
            //Overriding RunSettings
            if (options.Get().Any(k => k.Key.Contains("RS_")))
            {
                //Regenerate Driver Capabilities
                OverrideRunSettingsParams(options);
            }

            PreRequisiteCheck();
        }
        internal void OverrideRunSettingsParams(RunParameterUpdater @params)
        {
            TestLogs.WriteLogSection("Overriding RunSettings",
                                     () => {
                foreach (KeyValuePair <string, object> runSetting in @params.Get().Where(k => k.Key.Contains("RS_")))
                {
                    System.Reflection.PropertyInfo contextProperty = this.context.GetType().GetProperty(runSetting.Key);
                    if (contextProperty != null && contextProperty.CanWrite)
                    {
                        contextProperty.SetValue(this.context, runSetting.Value);
                        isCapabilityRefreshNeeded = true;
                        TestLogs.Write($"Overriding RunSettings Key: [{runSetting.Key}], New Value = [{runSetting.Value}]");
                    }
                }
            });

            RefreshCapabilities();
        }
 internal void SetupPreReq()
 {
     RunParameterUpdater = new RunParameterUpdater();
     Resources.SetupTestArtifacts();
     Capabilities = new DriverCapabilities(TestEnvironmentParameters);
 }