#include <bits/stdc++.h>
using namespace std;
const long long int maxN = 200005;
long long int n, m;
string s[60];
long long int vis[55][55], dp[55][55];
long long int flg = 1, cnt = 0;
bool sortbysec(const pair<long long int, long long int> &a,
               const pair<long long int, long long int> &b) {
  return (a.second < b.second);
}
bool sortinrev(const pair<long long int, long long int> &a,
               const pair<long long int, long long int> &b) {
  return a.second != b.second && a.first > b.first;
}
void dfs(long long int i, long long int j) {
  if (i >= n || i < 0 || j < 0 || j >= m || vis[i][j] == 1) return;
  vis[i][j] = 1;
  if (s[i][j] == '#') return;
  if (s[i][j] == 'G') {
    cnt++;
  }
  if (s[i][j] == 'B') {
    flg = 0;
    return;
  }
  dfs(i + 1, j);
  dfs(i - 1, j);
  dfs(i, j + 1);
  dfs(i, j - 1);
}
int32_t main() {
  long long int t = 1;
  cin >> t;
  while (t--) {
    long long int b = 0, g = 0;
    cin >> n >> m;
    for (long long int i = 0; i < n; i++) {
      cin >> s[i];
      for (long long int j = 0; j < m; j++) {
        if (s[i][j] == 'G') {
          g++;
        } else if (s[i][j] == 'B') {
          b++;
        }
      }
    }
    if (g == 0) {
      cout << "Yes" << endl;
    } else {
      for (long long int i = 0; i < 55; i++) {
        for (long long int j = 0; j < 55; j++) vis[i][j] = 0;
      }
      long long int flag = 1;
      for (long long int i = 0; i < n && flag != 0; i++) {
        for (long long int j = 0; j < m; j++) {
          if (s[i][j] == 'B') {
            if (i - 1 >= 0) {
              if (s[i - 1][j] == '.')
                s[i - 1][j] = '#';
              else if (s[i - 1][j] == 'G') {
                flag = 0;
                break;
              }
            }
            if (i + 1 < n) {
              if (s[i + 1][j] == '.')
                s[i + 1][j] = '#';
              else if (s[i + 1][j] == 'G') {
                flag = 0;
                break;
              }
            }
            if (j - 1 >= 0) {
              if (s[i][j - 1] == '.')
                s[i][j - 1] = '#';
              else if (s[i][j - 1] == 'G') {
                flag = 0;
                break;
              }
            }
            if (j + 1 < m) {
              if (s[i][j + 1] == '.')
                s[i][j + 1] = '#';
              else if (s[i][j + 1] == 'G') {
                flag = 0;
                break;
              }
            }
          }
        }
      }
      if (flag == '0' || s[n - 1][m - 1] == '#') {
        cout << "No" << endl;
      } else {
        flg = 1;
        cnt = 0;
        dfs(n - 1, m - 1);
        if (flag == 0 || cnt != g) {
          cout << "No" << endl;
        } else
          cout << "Yes" << endl;
      }
    }
  }
}
